diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java
index eb3641f..ecdafc0 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java
@@ -95,7 +95,8 @@
                 return true;
             }
             else {
-                setCandidateList(firstSpans.end());
+                setCandidateList();
+//                log.debug(candidateSpans.toString());
             }
         }
         return false;
@@ -107,14 +108,9 @@
      * all possible expansion with respect to the expansion length
      * (min,max) variables.
      * 
-     * @param lastPosition
-     *            is used in left expansion. The start position of
-     *            the candidates to collect must not beyond this
-     *            position.
-     * 
      * @throws IOException
      */
-    private void setCandidateList (int lastPosition) throws IOException {
+    private void setCandidateList () throws IOException {
         CandidateSpan cs;
         int counter, start, end;
 
@@ -130,10 +126,12 @@
                 counter--;
             }
             
+            int lastPosition = firstSpans.start();
             if (hasMoreSpans && (hasMoreSpans = firstSpans.next()) ) {
                 start = Math.max(0, firstSpans.start() - max);
+                log.debug("next candidate start: "+start+", lastPosition "+lastPosition);
                 if (start <= lastPosition) {
-                    setCandidateList(lastPosition);
+                    setCandidateList();
                 }
             }
         }
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 fc915c8..5e21d39 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
@@ -114,9 +114,11 @@
                 matchList.remove(0);
                 return true;
             }
+            
             // Forward firstspan
             hasMoreFirstSpan = firstSpans.next();
             if (hasMoreFirstSpan){
+                log.debug("FirstSpan "+firstSpans.start() +","+firstSpans.end());
                 setMatchList();
             }
             else {
@@ -170,6 +172,7 @@
      * @throws IOException
      */
     private void searchCandidates () throws IOException {
+        log.debug(candidateList.toString());
         Iterator<CandidateSpan> i = candidateList.iterator();
         CandidateSpan cs;
         while (i.hasNext()) {
@@ -200,6 +203,7 @@
     private void searchMatches () throws IOException {
 
         while (hasMoreSpans && candidateListDocNum == secondSpans.doc()) {
+            log.debug("SecondSpan " +secondSpans.start() + "," + secondSpans.end());
             if (secondSpans.start() > firstSpans.end()) {
                 break;
             }
