diff --git a/CHANGES b/CHANGES
index e76855a..d9bd290 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
-0.42 2014-09-17
+0.42 2014-09-19
         - [cleanup] Extracted private classes from KorapMatch (diewald)
+	- [bugfix] Fix query rewrite in contains-queries (diewald)
 
 0.41 2014-09-17
         - [feature] getStartPos(classNr) and getEndPos(classNr)
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanWithinQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanWithinQuery.java
index d882bde..a314475 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanWithinQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanWithinQuery.java
@@ -161,6 +161,10 @@
 	);
     };
 
+    /*
+     * Rewrite query in case it includes regular expressions or wildcards
+     */
+
     @Override
     public Query rewrite (IndexReader reader) throws IOException {
 	SpanWithinQuery clone = null;
@@ -173,6 +177,14 @@
 	    clone.embedded = query;
 	};
 
+	query = (SpanQuery) wrap.rewrite(reader);
+
+	if (query != wrap) {
+	    if (clone == null)
+		clone = this.clone();
+	    clone.wrap = query;
+	};
+
 	if (clone != null)
 	    return clone;
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
index 083f8a7..ab0729f 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
@@ -242,4 +242,44 @@
 	assertEquals("[affe afffe] baum ...", kr.getMatch(0).getSnippetBrackets());
     };
 
+
+    @Test
+    public void indexRegexWithinRewrite () throws IOException {
+	KorapIndex ki = new KorapIndex();
+
+	// abcabcabac
+	FieldDocument fd = new FieldDocument();
+	fd.addTV("base",
+		 "affe afffe baum baumgarten steingarten franz hans haus efeu effe",
+		 "[(0-4)s:affe|_0#0-4|-:t$<i>10]" +
+		 "[(5-10)s:afffe|_1#5-10]" +
+		 "[(11-15)s:baum|_2#11-15]" +
+		 "[(16-26)s:baumgarten|_3#16-26]" +
+		 "[(27-38)s:steingarten|_4#27-38]" +
+		 "[(39-44)s:franz|_5#39-44]" +
+		 "[(45-49)s:hans|_6#45-49]" +
+		 "[(50-54)s:haus|_7#50-54]" +
+		 "[(55-59)s:efeu|_8#55-59]" +
+		 "[(60-64)s:effe|_9#60-64]");
+	ki.addDoc(fd);
+
+	ki.commit();
+
+	KorapQuery kq = new KorapQuery("base");
+	SpanQuery sq = kq.contains(
+				   kq.seq(
+					  kq.re("s:a.*e")
+					  ).append(
+						   kq.re("s:af*e")
+						   ),
+				   kq.seg("s:affe")).toQuery();
+	assertEquals("spanContain(spanNext(SpanMultiTermQueryWrapper(base:/s:a.*e/), SpanMultiTermQueryWrapper(base:/s:af*e/)), base:s:affe)", sq.toString());
+	KorapSearch ks = new KorapSearch(sq);
+	ks.context.left.setToken(true).setLength(1);
+	ks.context.right.setToken(true).setLength(1);
+
+	KorapResult kr = ki.search(ks);
+	assertEquals(1, kr.getTotalResults());
+	assertEquals("[affe afffe] baum ...", kr.getMatch(0).getSnippetBrackets());
+    };
 };
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
index 970b30f..2af8786 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
@@ -879,10 +879,8 @@
 
 	kr = ki.search(sq, (short) 15);
 	assertEquals("totalResults", 0, kr.totalResults());
-
     };
 
-
     //!! Offset is 1 token tooo long
 
     @Test
