diff --git a/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
index ebd3a11..d46d930 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
@@ -21,7 +21,6 @@
 import de.ids_mannheim.korap.query.SpanRelationMatchQuery;
 import de.ids_mannheim.korap.query.SpanRelationQuery;
 import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
-import de.ids_mannheim.korap.response.Match;
 import de.ids_mannheim.korap.response.Result;
 import de.ids_mannheim.korap.util.QueryException;
 
@@ -103,13 +102,13 @@
         // cat="vb" & cat="prp" & cat="nn" & #1 .notordered #2 & #1
         // .{0,2} #3 & #3 -> #2
 
-        assertEquals(
-                "spanReference(focus(#[1,2]spanSegment(focus(#2: "
-                        + "spanSegment(spanRelation(tokens:>:stanford/d:tag), "
-                        + "focus(3: spanDistance(focus(1: spanDistance({1: <tokens:vb />}, "
-                        + "{2: <tokens:prp />}, [(w[1:2], notOrdered, notExcluded)])), "
-                        + "{3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)])))), "
-                        + "{2: <tokens:prp />})), 2)", sq.toString());
+		assertEquals(
+				"spanReference(focus(#[1,2]spanSegment(focus(#2: "
+						+ "spanSegment(spanRelation(tokens:>:stanford/d:tag), "
+						+ "focus(3: spanDistance(focus(1: spanDistance({1: <tokens:vb />}, "
+						+ "{2: <tokens:prp />}, [(w[1:2], notOrdered, notExcluded)])), "
+						+ "{3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)])))), "
+						+ "{2: <tokens:prp />})), 2)", sq.toString());
 
         SpanElementQuery seq1 = new SpanElementQuery("tokens", "vb");
         // new SpanTermQuery(new Term("tokens", "c:vb"));
@@ -121,16 +120,12 @@
         SpanClassQuery scq2 = new SpanClassQuery(seq2, (byte) 2);
         SpanClassQuery scq3 = new SpanClassQuery(seq3, (byte) 3);
 
-        // vb .{0,1} prp
-        // ND: I don't know if this is correct
         SpanDistanceQuery sdq1 = new SpanDistanceQuery(scq1, scq2,
-                new DistanceConstraint(0, 1, false, false), true);
+				new DistanceConstraint(1, 2, false, false), true);
         SpanFocusQuery sfq1 = new SpanFocusQuery(sdq1, (byte) 1);
 
-        // vb .{0,2} nn
-        // ND: I don't know if this is correct
         SpanDistanceQuery sdq2 = new SpanDistanceQuery(sfq1, scq3,
-                new DistanceConstraint(0, 2, false, false), true);
+				new DistanceConstraint(1, 3, false, false), true);
         SpanFocusQuery sfq2 = new SpanFocusQuery(sdq2, (byte) 3);
 
         // nn -> prp
@@ -203,7 +198,7 @@
                 "spanReference(focus(#[1,2]spanSegment(focus(#2: spanSegment(spanRelation(tokens:>:stanford/d:tag), "
                         + "focus(1: spanReference(focus(#[1,2]spanSegment(focus(#2: spanSegment(spanRelation(tokens:>:stanford/d:tag), "
                         + "focus(3: spanDistance(focus(1: spanDistance({1: <tokens:vb />}, {2: <tokens:prp />}, "
-                        + "[(w[0:1], notOrdered, notExcluded)])), {3: <tokens:nn />}, [(w[0:2], notOrdered, notExcluded)])))), "
+						+ "[(w[1:2], notOrdered, notExcluded)])), {3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)])))), "
                         + "{2: <tokens:prp />})), 2)))), {3: <tokens:nn />})), 3)",
                 sq.toString());
         kr = ki.search(sq, (short) 10);
