diff --git a/tsdb/engine/wal/wal_test.go b/tsdb/engine/wal/wal_test.go
index c00fa30ea4..5189d4e12d 100644
--- a/tsdb/engine/wal/wal_test.go
+++ b/tsdb/engine/wal/wal_test.go
@@ -870,6 +870,51 @@ func TestWAL_PointsSorted(t *testing.T) {
 	}
 }
 
+func TestWAL_Cursor_Reverse(t *testing.T) {
+	log := openTestWAL()
+	defer log.Close()
+	defer os.RemoveAll(log.path)
+
+	if err := log.Open(); err != nil {
+		t.Fatalf("couldn't open wal: %s", err.Error())
+	}
+
+	codec := tsdb.NewFieldCodec(map[string]*tsdb.Field{
+		"value": {
+			ID:   uint8(1),
+			Name: "value",
+			Type: influxql.Float,
+		},
+	})
+
+	// test that we can write to two different series
+	p1 := parsePoint("cpu,host=A value=1.1 1", codec)
+	p2 := parsePoint("cpu,host=A value=4.4 4", codec)
+	p3 := parsePoint("cpu,host=A value=2.2 2", codec)
+	p4 := parsePoint("cpu,host=A value=6.6 6", codec)
+	if err := log.WritePoints([]tsdb.Point{p1, p2, p3, p4}, nil, nil); err != nil {
+		t.Fatalf("failed to write points: %s", err.Error())
+	}
+
+	c := log.Cursor("cpu,host=A", false)
+	k, _ := c.Next()
+	if btou64(k) != 6 {
+		t.Fatal("points out of order")
+	}
+	k, _ = c.Next()
+	if btou64(k) != 4 {
+		t.Fatal("points out of order")
+	}
+	k, _ = c.Next()
+	if btou64(k) != 2 {
+		t.Fatal("points out of order")
+	}
+	k, _ = c.Next()
+	if btou64(k) != 1 {
+		t.Fatal("points out of order")
+	}
+}
+
 // test that partitions get compacted and flushed when number of series hits compaction threshold
 // test that partitions get compacted and flushed when a single series hits the compaction threshold
 // test that writes slow down when the partition size threshold is hit