diff --git a/htrace-core/src/main/java/org/apache/htrace/Trace.java b/htrace-core/src/main/java/org/apache/htrace/Trace.java
index 08e215a..c7147ae 100644
--- a/htrace-core/src/main/java/org/apache/htrace/Trace.java
+++ b/htrace-core/src/main/java/org/apache/htrace/Trace.java
@@ -82,6 +82,7 @@
         end(0).
         description(description).
         traceId(tinfo.traceId).
+        spanId(Tracer.nonZeroRandom64()).
         parents(new long[] { tinfo.spanId }).
         processId(Tracer.getProcessId()).
         build();
diff --git a/htrace-core/src/main/java/org/apache/htrace/Tracer.java b/htrace-core/src/main/java/org/apache/htrace/Tracer.java
index ddfd25c..af2d20e 100644
--- a/htrace-core/src/main/java/org/apache/htrace/Tracer.java
+++ b/htrace-core/src/main/java/org/apache/htrace/Tracer.java
@@ -32,7 +32,7 @@
   public static final Log LOG = LogFactory.getLog(Tracer.class);
   private final static Random random = new Random();
 
-  private static long random64() {
+  static long nonZeroRandom64() {
     long id;
     do {
       id = random.nextLong();
@@ -81,9 +81,9 @@
           begin(System.currentTimeMillis()).
           end(0).
           description(description).
-          traceId(random64()).
+          traceId(nonZeroRandom64()).
           parents(EMPTY_PARENT_ARRAY).
-          spanId(random64()).
+          spanId(nonZeroRandom64()).
           processId(getProcessId()).
           build();
     } else {
diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java b/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
index 9956ddb..afd0202 100644
--- a/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
+++ b/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
@@ -61,7 +61,7 @@
   private List<TimelineAnnotation> timeline = null;
   private final static Random random = new Random();
 
-  private static long random64() {
+  private static long nonZeroRandom64() {
     long id;
     do {
       id = random.nextLong();
@@ -77,7 +77,7 @@
       description(childDescription).
       traceId(traceId).
       parents(new long[] {spanId}).
-      spanId(random64()).
+      spanId(nonZeroRandom64()).
       processId(processId).
       build();
   }
diff --git a/htrace-core/src/test/java/org/apache/htrace/TestHTrace.java b/htrace-core/src/test/java/org/apache/htrace/TestHTrace.java
index cd4eb28..0ab8f35 100644
--- a/htrace-core/src/test/java/org/apache/htrace/TestHTrace.java
+++ b/htrace-core/src/test/java/org/apache/htrace/TestHTrace.java
@@ -115,4 +115,14 @@
     tc.createSimpleTrace();
     tc.createSampleRpcTrace();
   }
+
+  @Test(timeout=60000)
+  public void testRootSpansHaveNonZeroSpanId() throws Exception {
+    TraceInfo traceInfo = new TraceInfo(100L, 200L);
+    TraceScope scope = Trace.startSpan("myRootSpan", traceInfo);
+    Assert.assertNotNull(scope);
+    Assert.assertEquals("myRootSpan", scope.getSpan().getDescription());
+    Assert.assertEquals(100L, scope.getSpan().getTraceId());
+    Assert.assertTrue(0 != scope.getSpan().getSpanId());
+  }
 }
