diff --git a/Changes b/Changes
index 3b4f0bf..a681cc0 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 0.55.3 2016-02-15
-	- [bugfix] use base foundry for default sentences and paragraphs
+	- [bugfix] Use base foundry for default sentences and paragraphs
 	  (diewald)
+	- [bugfix] Distance constraint exclusion serialized (diewald)
 
 0.55.2 2016-02-13
         - [bugfix] Fixed support for corpus and doc IDs containing
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index ec028f0..f2cf859 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -911,6 +911,11 @@
                     unit = value.append("base/s:").append(unit).toString();
                 };
 
+                // Set distance exclusion
+                Boolean exclusion = false;
+                if (constraint.has("exclude"))
+                    exclusion = constraint.get("exclude").asBoolean();
+
                 // Sanitize boundary
                 if (max < min)
                     max = min;
@@ -919,7 +924,7 @@
                     log.trace("Add distance constraint of '{}': {}-{}", unit,
                             min, max);
 
-                sseqqw.withConstraint(min, max, unit);
+                sseqqw.withConstraint(min, max, unit, exclusion);
             };
         };
 
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanSequenceQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanSequenceQueryJSON.java
index d95ccfc..d88eb62 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanSequenceQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanSequenceQueryJSON.java
@@ -303,7 +303,7 @@
 
     @Test
     public void queryJSONseqMultipleDistances () throws QueryException {
-        SpanQueryWrapper sqwi = jsonQueryFile("multiple-distances.jsonld");
+        SpanQueryWrapper sqwi = jsonQueryFile("distance-multiple.jsonld");
         // er []{,10} kann []{1,10} sagte 
 
         assertEquals(
@@ -311,6 +311,20 @@
                 sqwi.toQuery().toString());
     };
 
+    @Test
+    public void queryJSONseqSentenceDistance () throws QueryException {
+        SpanQueryWrapper sqwi = jsonQueryFile("distance-sentence.jsonld");
+
+        assertEquals("spanElementDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(base/s:s[0:0], notOrdered, notExcluded)])",sqwi.toQuery().toString());
+    };
+
+    @Test
+    public void queryJSONseqSentenceDistanceExcluded () throws QueryException {
+        SpanQueryWrapper sqwi = jsonQueryFile("distance-sentence-excluded.jsonld");
+
+        assertEquals("spanElementDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(base/s:s[0:0], notOrdered, excluded)])",sqwi.toQuery().toString());
+    };
+
 
     // get query wrapper based on json file
     public SpanQueryWrapper jsonQueryFile (String filename) {
diff --git a/src/test/resources/queries/sequence/multiple-distances.jsonld b/src/test/resources/queries/sequence/distance-multiple.jsonld
similarity index 100%
rename from src/test/resources/queries/sequence/multiple-distances.jsonld
rename to src/test/resources/queries/sequence/distance-multiple.jsonld
diff --git a/src/test/resources/queries/sequence/distance-sentence-excluded.jsonld b/src/test/resources/queries/sequence/distance-sentence-excluded.jsonld
new file mode 100644
index 0000000..1676714
--- /dev/null
+++ b/src/test/resources/queries/sequence/distance-sentence-excluded.jsonld
@@ -0,0 +1,57 @@
+{
+  "@context":"http://ids-mannheim.de/ns/KorAP/json-ld/v0.3/context.jsonld",
+  "collection":null,
+  "query": {
+    "distances": [
+      {
+        "max": 0,
+        "min": 0,
+        "boundary": {
+          "min": 0,
+          "@type": "koral:boundary",
+          "max": 0
+        },
+        "@type": "cosmas:distance",
+        "key": "s",
+	"exclude" : true
+      }
+    ],
+    "@type": "koral:group",
+    "operands": [
+      {
+        "@type": "koral:group",
+        "operands": [
+          {
+            "@type": "koral:token",
+            "wrap": {
+              "@type": "koral:term",
+              "layer": "orth",
+              "key": "der",
+              "match": "match:eq"
+            }
+          }
+        ],
+        "operation": "operation:class",
+        "classOut": 129
+      },
+      {
+        "classOut": 129,
+        "operation": "operation:class",
+        "operands": [
+          {
+            "wrap": {
+              "match": "match:eq",
+              "@type": "koral:term",
+              "key": "Baum",
+              "layer": "orth"
+            },
+            "@type": "koral:token"
+          }
+        ],
+        "@type": "koral:group"
+      }
+    ],
+    "inOrder": false,
+    "operation": "operation:sequence"
+  }
+}
diff --git a/src/test/resources/queries/sequence/distance-sentence.jsonld b/src/test/resources/queries/sequence/distance-sentence.jsonld
new file mode 100644
index 0000000..435693f
--- /dev/null
+++ b/src/test/resources/queries/sequence/distance-sentence.jsonld
@@ -0,0 +1,56 @@
+{
+  "@context":"http://ids-mannheim.de/ns/KorAP/json-ld/v0.3/context.jsonld",
+  "collection":null,
+  "query":{
+    "distances": [
+      {
+        "max": 0,
+        "min": 0,
+        "boundary": {
+          "max": 0,
+          "min": 0,
+          "@type": "koral:boundary"
+        },
+        "@type": "cosmas:distance",
+        "key": "s"
+      }
+    ],
+    "@type": "koral:group",
+    "operands": [
+      {
+        "classOut": 129,
+        "operands": [
+          {
+            "@type": "koral:token",
+            "wrap": {
+              "@type": "koral:term",
+              "key": "der",
+              "layer": "orth",
+              "match": "match:eq"
+            }
+          }
+        ],
+        "operation": "operation:class",
+        "@type": "koral:group"
+      },
+      {
+        "classOut": 129,
+        "operation": "operation:class",
+        "operands": [
+          {
+            "@type": "koral:token",
+            "wrap": {
+              "match": "match:eq",
+              "@type": "koral:term",
+              "layer": "orth",
+              "key": "Baum"
+            }
+          }
+        ],
+        "@type": "koral:group"
+      }
+    ],
+    "inOrder": false,
+    "operation": "operation:sequence"
+  }
+}
