diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
index fcdb6ff..8049782 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
@@ -409,4 +409,9 @@
         else
             return 1;
     }
+    
+    @Override
+    public String toString () {
+        return getClass().getName() + "@" +doc + ":" + start + "-" + end;
+    }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java
index 8a22191..2ea1377 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/NextSpans.java
@@ -116,8 +116,9 @@
             }
             // Forward firstspan
             hasMoreFirstSpan = firstSpans.next();
-            if (hasMoreFirstSpan)
+            if (hasMoreFirstSpan){
                 setMatchList();
+            }
             else {
                 hasMoreSpans = false;
                 candidateList.clear();
@@ -269,6 +270,13 @@
             };
         }
         matchPayload.clear();
+        if (hasMoreFirstSpan){
+            setMatchList();
+        }
+        else {
+            hasMoreSpans = false;
+            candidateList.clear();
+        }
         return advance();
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java
index 7e57a80..2698133 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java
@@ -72,10 +72,8 @@
 
     /**
      * Advances the RepetitionSpans to the next match by setting the
-     * first
-     * element in the matchlist as the current match. When the
-     * matchlist is
-     * empty, it has to be set first.
+     * first element in the matchlist as the current match. When the
+     * matchlist is empty, it has to be set first.
      * 
      * @return <code>true</code> if a match is found,
      *         <code>false</code>
@@ -104,7 +102,8 @@
 
 
     /**
-     * Collects all adjacent firstspans occurring in a sequence.
+     * Collects all adjacent firstspans occurring in a sequence 
+     * in the same document.
      * 
      * @return a list of the adjacent spans
      * @throws IOException
@@ -173,8 +172,7 @@
 
     /**
      * Generates all possible repetition match spans from the given
-     * list of
-     * adjacent spans and add them to the match list.
+     * list of adjacent spans and add them to the match list.
      * 
      * @param adjacentSpans
      */
@@ -230,12 +228,6 @@
                 }
                 j++;
             }
-
-            /*
-            if (j + i == adjacentSpans.size()) {
-
-            }
-            */
         }
 
         Collections.sort(matchList);
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
index 762c907..4478295 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
@@ -385,7 +385,6 @@
     };
 
     @Test
-    @Ignore
     public void testRepetitionSnippetBug3 () throws IOException, QueryException {
         // Construct index
         Pattern p = Pattern.compile("bccc?d");
