diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
index 224d088..2e9ac7b 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
@@ -933,11 +933,20 @@
     }
 
     private LinkedHashMap<String, Object> parseDistance(ParseTree rangeSpec) {
-        Integer min = 
-                Integer.parseInt(rangeSpec.getChild(0).toStringTree(parser));
+        String minString = rangeSpec.getChild(0).toStringTree(parser);
+        String maxString = null; // not always given, prevent NPE
+        if (minString.equals("0")) {
+            addError(StatusCodes.MALFORMED_QUERY, "Distance may not be 0!");
+            return KoralObjectGenerator.makeDistance("w", 0, 0);
+        }
+        // decrease by 1 to account for disparity between ANNIS distance and 
+        // koral:distance (ANNIS "x .1,3 y" means distance range 0,2 in KoralQ)
+        Integer min = Integer.parseInt(minString)-1; 
         Integer max = null;
-        if (rangeSpec.getChildCount()==3) 
-            max = Integer.parseInt(rangeSpec.getChild(2).toStringTree(parser));
+        if (rangeSpec.getChildCount() == 3) {
+            maxString = rangeSpec.getChild(2).toStringTree(parser);
+            max = Integer.parseInt(maxString)-1;
+        }
         return KoralObjectGenerator.makeDistance("w", min, max);
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
index f905beb..b188301 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
@@ -378,7 +378,6 @@
             ParseTree leftChild = node.getChild(i-1);
             ParseTree rightChild = node.getChild(i+1);
             if (leftChild != null) {
-                System.out.println(leftChild.getText());
                 if (! classWrapRegistry.containsKey(leftChild)) {
                     alignmentFirstArg = classCounter++;
                     classWrapRegistry.put(leftChild, alignmentFirstArg);
@@ -387,7 +386,6 @@
                 }
             }
             if (rightChild != null) {
-                System.out.println(rightChild.getText());
                 if (! classWrapRegistry.containsKey(rightChild)) {
                     alignmentSecondArg = classCounter++;
                     classWrapRegistry.put(rightChild, alignmentSecondArg);
@@ -893,10 +891,7 @@
 
     /**
      * Parses the min and max attributes for a boundary object as defined in 
-     * a distance node. Increases the min and max counters by 1 in order to
-     * reflect the disparity between the <i>distance</i> of operands (which is
-     * 1 in the case of directly succeeding tokens) and the Poliqarpish
-     * <i>number of intermediate tokens</i> (which is 0). 
+     * a distance node. 
      * 
      * @param distanceNode A node of category 'distance'
      * @return An array of two fields, where the first is the min value and the
@@ -909,9 +904,9 @@
                 .getChild(emptyTokenSeqIndex));
         Integer min = minmax[0];
         Integer max = minmax[1];
-        min++;
-        if (max != null)
-            max++;
+//        min++;
+//        if (max != null)
+//            max++;
         return new Integer[] { min, max };
     }
 
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
index 80087eb..fc1b74d 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
@@ -424,8 +424,22 @@
         assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
         assertEquals("koral:distance",      res.at("/query/distances/0/@type").asText());
         assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(2,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(3,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(1,                     res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(2,                     res.at("/query/distances/0/boundary/max").asInt());
+        
+        query = "tok=\"der\" & tok=\"die\" & #1 .2 #2";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("koral:group",         res.at("/query/@type").asText());
+        assertEquals("operation:sequence",  res.at("/query/operation").asText());
+        assertEquals("der",                 res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("die",                 res.at("/query/operands/1/wrap/key").asText());
+        assertEquals(true,                  res.at("/query/inOrder").asBoolean());
+        assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
+        assertEquals("koral:distance",      res.at("/query/distances/0/@type").asText());
+        assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
+        assertEquals(1,                     res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(true,                  res.at("/query/distances/0/boundary/max").isMissingNode());
 
         query = "tok=\"der\" & tok=\"die\" & #1 .* #2";
         qs.setQuery(query, "annis");
@@ -458,8 +472,8 @@
         assertEquals(true,                  res.at("/query/operands/2").isMissingNode());
         assertEquals("koral:distance",      res.at("/query/distances/0/@type").asText());
         assertEquals("koral:boundary",      res.at("/query/distances/0/boundary/@type").asText());
-        assertEquals(2,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(3,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(1,                     res.at("/query/distances/0/boundary/min").asInt());
+        assertEquals(2,                     res.at("/query/distances/0/boundary/max").asInt());
 
         query = "tok=\"der\" & tok=\"die\" & #1 ^* #2";
         qs.setQuery(query, "annis");
@@ -596,7 +610,7 @@
 
     @Test
     public void testMultipleMixedOperators() throws Exception {
-        query = "tok=\"Sonne\" & tok=\"Mond\" & tok=\"Sterne\" & #1 > #2 .0,4 #3";
+        query = "tok=\"Sonne\" & tok=\"Mond\" & tok=\"Sterne\" & #1 > #2 .1,4 #3";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:group",         res.at("/query/@type").asText());
@@ -615,9 +629,9 @@
         assertEquals("Sterne",              res.at("/query/operands/1/wrap/key").asText());
         assertEquals("w",                   res.at("/query/distances/0/key").asText());
         assertEquals(0,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(3,                     res.at("/query/distances/0/boundary/max").asInt());
 
-        query = "tok=\"Sonne\" & tok=\"Mond\" & #1 > #2 .0,4  tok=\"Sterne\"";
+        query = "tok=\"Sonne\" & tok=\"Mond\" & #1 > #2 .1,4  tok=\"Sterne\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:group",         res.at("/query/@type").asText());
@@ -636,7 +650,7 @@
         assertEquals("Sterne",              res.at("/query/operands/1/wrap/key").asText());
         assertEquals("w",                   res.at("/query/distances/0/key").asText());
         assertEquals(0,                     res.at("/query/distances/0/boundary/min").asInt());
-        assertEquals(4,                     res.at("/query/distances/0/boundary/max").asInt());
+        assertEquals(3,                     res.at("/query/distances/0/boundary/max").asInt());
 
         query = "cat=\"NP\" & cat=\"VP\" & cat=\"PP\" & #1 $ #2 > #3";
         qs.setQuery(query, "annis");
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
index 7ce445d..b7858af 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
@@ -334,8 +334,8 @@
         assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
         assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
         assertEquals("koral:token",			operands.get(0).at("/@type").asText());
         assertEquals("der",					operands.get(0).at("/wrap/key").asText());
@@ -355,8 +355,8 @@
         assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
         assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(3,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(3,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
         assertEquals("koral:token",			operands.get(0).at("/@type").asText());
         assertEquals("der",					operands.get(0).at("/wrap/key").asText());
@@ -376,8 +376,8 @@
         assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
         assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(3,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
         assertEquals("koral:token",			operands.get(0).at("/@type").asText());
         assertEquals("der",					operands.get(0).at("/wrap/key").asText());
@@ -397,7 +397,7 @@
         assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
         assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
         assertEquals(true,					res.at("/query/distances").elements().next().at("/boundary/max").isMissingNode());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
         assertEquals("koral:token",			operands.get(0).at("/@type").asText());
@@ -418,7 +418,7 @@
         assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
         assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(1,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(0,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
         assertEquals(true,					res.at("/query/distances").elements().next().at("/boundary/max").isMissingNode());
 
         query = "[base=der][]{2,5}[base=Mann][]?[][base=Frau]";
@@ -430,8 +430,8 @@
         assertEquals("koral:distance",		res.at("/query/distances").elements().next().at("/@type").asText());
         assertEquals("w",					res.at("/query/distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		res.at("/query/distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(3,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(6,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
+        assertEquals(2,						res.at("/query/distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(5,						res.at("/query/distances").elements().next().at("/boundary/max").asInt());
         operands = Lists.newArrayList(res.at("/query/operands").elements());
         assertEquals("koral:token",			operands.get(0).at("/@type").asText());
         assertEquals("der",					operands.get(0).at("/wrap/key").asText());
@@ -442,8 +442,8 @@
         assertEquals("koral:distance",		operands.get(1).get("distances").elements().next().at("/@type").asText());
         assertEquals("w",					operands.get(1).get("distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		operands.get(1).get("distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(2,						operands.get(1).get("distances").elements().next().at("/boundary/min").asInt());
-        assertEquals(3,						operands.get(1).get("distances").elements().next().at("/boundary/max").asInt());
+        assertEquals(1,						operands.get(1).get("distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(2,						operands.get(1).get("distances").elements().next().at("/boundary/max").asInt());
         operands = Lists.newArrayList(operands.get(1).get("operands").elements());
         assertEquals("Mann",				operands.get(0).at("/wrap/key").asText());
         assertEquals("lemma",				operands.get(0).at("/wrap/layer").asText());
@@ -469,7 +469,7 @@
         assertEquals("koral:distance",		operands.get(1).get("distances").elements().next().at("/@type").asText());
         assertEquals("w",					operands.get(1).get("distances").elements().next().at("/key").asText());
         assertEquals("koral:boundary",		operands.get(1).get("distances").elements().next().at("/boundary/@type").asText());
-        assertEquals(1,						operands.get(1).get("distances").elements().next().at("/boundary/min").asInt());
+        assertEquals(0,						operands.get(1).get("distances").elements().next().at("/boundary/min").asInt());
         assertEquals(true,					operands.get(1).get("distances").elements().next().at("/boundary/max").isMissingNode());
         operands = Lists.newArrayList(operands.get(1).get("operands").elements());
         assertEquals("der",					operands.get(0).at("/wrap/key").asText());
