diff --git a/src/main/java/de/ids_mannheim/korap/KrillMeta.java b/src/main/java/de/ids_mannheim/korap/KrillMeta.java
index 8ce45c0..eddafd8 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillMeta.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillMeta.java
@@ -200,7 +200,7 @@
 
 
     public KrillMeta setCount (short value) {
-        if (value > 0)
+        if (value >= 0)
             this.count = (value <= this.countMax) ? value : this.countMax;
         return this;
     };
diff --git a/src/main/java/de/ids_mannheim/korap/response/Result.java b/src/main/java/de/ids_mannheim/korap/response/Result.java
index 0dabb24..32b3cfe 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Result.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Result.java
@@ -90,7 +90,7 @@
         this.serialQuery = query;
         this.startIndex = startIndex;
         this.itemsPerPage = (itemsPerPage > ITEMS_PER_PAGE_MAX
-                || itemsPerPage < 1) ? ITEMS_PER_PAGE : itemsPerPage;
+                || itemsPerPage < 0) ? ITEMS_PER_PAGE : itemsPerPage;
         this.context = context;
     };
 
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
index fda521e..c407cce 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -30,6 +30,7 @@
 
 @RunWith(JUnit4.class)
 public class TestKrill {
+
     @Test
     public void searchCount () {
         Krill k = new Krill(new QueryBuilder("field1").seg("a").with("b"));
@@ -45,9 +46,10 @@
         assertEquals(meta.getCount(), 20);
         meta.setCount(500);
         assertEquals(meta.getCount(), meta.getCountMax());
+        meta.setCount(0);
+        assertEquals(meta.getCount(), 0);
     };
 
-
     @Test
     public void searchStartIndex () {
         Krill k = new Krill(new QueryBuilder("field1").seg("a").with("b"));
@@ -103,6 +105,7 @@
 
         Result kr = ks.apply(ki);
         assertEquals(kr.getTotalResults(), 6);
+        assertEquals(kr.getMatches().size(), 1);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
                 "... dem [[Buchstaben]] A ...");
 
@@ -113,6 +116,14 @@
         assertEquals(1, res.at("/meta/context/left/1").asInt());
         assertEquals("token", res.at("/meta/context/right/0").asText());
         assertEquals(1, res.at("/meta/context/right/1").asInt());
+
+        // Handle count=0 correctly
+        meta = ks.getMeta();
+        meta.setCount(0);
+        kr = ks.apply(ki);
+        assertEquals(kr.getTotalResults(), 6);
+        assertEquals(kr.getItemsPerPage(), 0);
+        assertEquals(kr.getMatches().size(), 0);
     };
 
 
@@ -185,7 +196,7 @@
                 getClass().getResource("/queries/metaquery6.jsonld").getFile());
         ks = new Krill(json);
         kr = ks.apply(ki);
-        assertEquals(kr.getTotalResults(), 1);
+        assertEquals(kr.getTotalResults(), 1);        
     };
 
 
