diff --git a/Changes b/Changes
index b7491c3..3f45c13 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.55.5 2016-04-29
+0.55.5 2016-05-02
 	- [performance] Changed to a dynamic window for sorting in FocusSpans (margaretha)
 	- [bugfix] store skipped spans in Repetitionspans as candidates
 	  (margaretha)
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java
index 5570b8f..52b657e 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java
@@ -15,6 +15,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+// Todo: Sort candidate spans only for negative start offsets!
+
 /**
  * Enumeration of SubSpans, which are parts of another Spans. The
  * SubSpans are specified with a start offset relative to the original
@@ -158,7 +160,8 @@
             cs.setEnd(firstSpans.end());
         }
 
-        // matchPayload.clear();
+        // Claer payloads of candidatespan
+        cs.getPayloads().clear();
 
         // Remove element payloads
         for (byte[] payload : firstSpans.getPayload()) {
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index 1945bdb..7e03f21 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -6,7 +6,7 @@
 # Spans:
 # log4j.logger.de.ids_mannheim.korap.query.spans.ElementSpans = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.query.spans.AttributeSpans = TRACE, stdout
-log4j.logger.de.ids_mannheim.korap.query.spans.SubSpans = TRACE, stdout
+# log4j.logger.de.ids_mannheim.korap.query.spans.SubSpans = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.query.spans.ElementAttributeSpans = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.query.spans.KorapTermSpan = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.query.spans.WithinSpans = TRACE, stdout
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java
index eb719b1..d0af112 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java
@@ -141,13 +141,21 @@
         ki.commit();
         SpanSubspanQuery ssq = new SpanSubspanQuery(new SpanElementQuery("base", "x"), -1, 1, true);
         kr = ki.search(ssq, (short) 10);
-        
+
+        /*        
         for (Match km : kr.getMatches()) {
             System.out.println(km.getStartPos() + "," + km.getEndPos()
                     + km.getSnippetBrackets());
         }
+        */
+
         assertEquals(2, kr.getTotalResults());
+        assertEquals(1, kr.getMatch(0).getStartPos());
+        assertEquals(2, kr.getMatch(0).getEndPos());
         assertEquals("a [b ]c ", kr.getMatch(0).getSnippetBrackets());
+
+        assertEquals(2, kr.getMatch(1).getStartPos());
+        assertEquals(3, kr.getMatch(1).getEndPos());
         assertEquals("a b [c ]", kr.getMatch(1).getSnippetBrackets());
     };
 };
