diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index d24f730..299c395 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -55,7 +55,6 @@
  * - Add hitc to form.
  * - Add infos to JsonExporter.
  * - Add date info.
- * - Adjust count, if hitc &lt; count.
  */
 
 @Path("/")
@@ -158,9 +157,12 @@
         int maxResults = Integer.parseInt(prop.getProperty("conf.max_exp_limit", "10000"));
 
         // Adjust the number of requested hits
-        if (hitc > 0 && hitc < maxResults) {
+        if (hitc > 0 && hitc < maxResults)
             maxResults = hitc;
-        };
+
+        // If less than pageSize results are requested - dont't fetch more
+        if (maxResults < pageSize)
+            pageSize = maxResults;
                
         // Create initial search uri
         UriBuilder uri = UriBuilder.fromPath("/api/v1.0/search")
@@ -171,6 +173,7 @@
             // .queryParam("context", "sentence")
             .queryParam("context", "40-t,40-t") // Not yet supported
             .queryParam("ql", ql)
+            .queryParam("count", pageSize)
             ;
 
         if (cq != null && cq.length() > 0)
@@ -180,9 +183,6 @@
             uri = uri.path(path);
         };
 
-        // Set the page count to the given pagesize
-        uri = uri.queryParam("count", pageSize);
-
         // Get client IP, in case service is behind a proxy
         String xff = "";
         // Get auth (temporarily) via Session riding
@@ -229,7 +229,7 @@
         if (fname != null) {
             exp.setFileName(fname);
         };
-        
+
         // Initialize exporter (with meta data and first matches)
         try {
             exp.init(resp);
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
index 0827f05..8ead0e0 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
@@ -732,6 +732,19 @@
         assertEquals(lines.length,8);
         assertEquals(lines[0],"HasMoreLeft,leftContext,Match,rightContext,HasMoreRight,isCutted,textSigle,author,pubDate,title");
         assertEquals(lines[7],"...,\"vielleicht eine neue Schloss-Einstein-Antragswelle unterbinden.-- 07:36, 23. Jun. 2008 (CEST)  Mentor  Lieber Kriddl, als ich mir die Liste der Mentoren anschaute, fiel mein Augenmerk auf Dich als Jurist. Könntest Du mir jungen Wikipedianer (aber nicht jung an Jahren) helfen, einen\",Plagegeist,\", der mich seit meiner ersten Teilnahme als IP mobbt, helfen? Wenn ja, so schau Dir doch als Einstieg bitte meinen Wiederherstellungs-Antrag zum Artikel Meton-Periode an: WP:LP, 26.Juni 08. Dort ist nicht nur der Sachverhalt, in den man sich nicht\",...,,WUD17/K35/39955,\"TaxonBot, u.a.\",2017-07-01,\"Benutzer Diskussion:Kriddl/Archiv\"");
+
+        // Check for pageSize adjustments
+        frmap.putSingle("hitc", "2");
+
+        responsecsv = target("/export").request()
+            .post(Entity.form(frmap));
+        assertEquals("Request CSV: Http Response should be 200: ",
+                Status.OK.getStatusCode(), responsecsv.getStatus());
+
+        str = responsecsv.readEntity(String.class);
+        lines = str.split("\n");
+
+        assertEquals(lines.length,3);
     };
     
 
