diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index 540db59..976fe86 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -1496,6 +1496,7 @@
         final TimeOutThread tthread = new TimeOutThread();
         tthread.start();
         final long timeout = meta.getTimeOut();
+        boolean isTimeout = false;
 
         // See: http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html
         long t1 = System.nanoTime();
@@ -1521,6 +1522,10 @@
 
                 int oldLocalDocID = -1;
 
+                if (isTimeout)
+                    break;
+
+                
                 /*
                  * Todo: There may be a way to know early if the bitset is emty
                  * by using LongBitSet - but this may not be as fast as I think.
@@ -1541,7 +1546,6 @@
                 final IndexReader lreader = atomic.reader();
                 int localDocID, docID;
 
-                boolean isTimeout = false;
                 // TODO: Get document information from Cache! Fieldcache?
                 for (; i < hits; i++) {
 
@@ -1646,6 +1650,7 @@
                     // Timeout!
                     if (tthread.getTime() > timeout) {
                         kr.setTimeExceeded(true);
+                        isTimeout=true;
                         break;
                     };
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestTimeout.java b/src/test/java/de/ids_mannheim/korap/index/TestTimeout.java
index 7c841e4..e7a63b6 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestTimeout.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestTimeout.java
@@ -32,4 +32,24 @@
         assertEquals(StatusCodes.RESPONSE_TIME_EXCEEDED,
                 kr.getWarning(0).getCode());
     }
+
+    @Test
+    public void testMultipleWarningMultilpleFragmentBug () throws IOException {
+        KrillIndex ki = new KrillIndex();
+        ki.addDoc(getClass().getResourceAsStream("/wiki/00001.json.gz"), true);
+        ki.commit();
+        ki.addDoc(getClass().getResourceAsStream("/wiki/00002.json.gz"), true);
+        ki.commit();
+
+        SpanQuery q = new SpanTermQuery(new Term("tokens", "s:der"));
+        Krill ks = new Krill(q);
+        KrillMeta meta = ks.getMeta();
+        meta.setTimeOut(-1);
+        Result kr = ks.apply(ki);
+        assertEquals(1, kr.getWarnings().size());
+        assertEquals(StatusCodes.RESPONSE_TIME_EXCEEDED,
+                kr.getWarning(0).getCode());
+    }
+
+
 }
