diff --git a/Changes b/Changes
index 893fda2..595bfcc 100644
--- a/Changes
+++ b/Changes
@@ -1,9 +1,11 @@
-0.54 2015-10-26
+0.54 2015-11-13
    	- [performance] Updated Lucene dependency from 4.10.3
 	  to 5.0.0 (diewald)
         - [bugfix] Minor fixes regarding invalid tokens in the
 	  test suite (diewald)
 	- Fixed krill.properties test (diewald)
+	- Fixed multiple distances in disjunction query
+	  (GitHub issue #2; margaretha)
 
 0.53 2015-09-25
         - [feature] Implemented new KrillCollection (diewald)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index 1b6fd26..b676dec 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -562,7 +562,7 @@
 
         // Fail to add json object
         catch (IOException e) {
-            log.error("File json not found");
+            log.error("File {} not found", json);
         };
         return (FieldDocument) null;
     };
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 bde5902..c2028c7 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -848,6 +848,29 @@
 
 
     @Test
+    public void searchJSONtokenDistanceSpanBug () throws IOException {
+        // Construct index
+        KrillIndex ki = new KrillIndex();
+        ki.addDoc(1, getClass().getResourceAsStream("/goe/AGX-00002.json"),
+                  false);
+        ki.addDoc(2, getClass().getResourceAsStream("/bzk/D59-00089.json.gz"),
+                  true);
+        ki.commit();
+        
+        // ({1:Sonne []* Erde} | {2: Erde []* Sonne})
+        String json = getString(getClass().getResource(
+            "/queries/bugs/tokendistancespan_bug.jsonld").getFile()
+        );
+
+        Krill ks = new Krill(json);
+        Result kr = ks.apply(ki);
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode res = mapper.readTree(kr.toJsonString());
+        assertTrue(res.at("/errors").isMissingNode());
+    };
+
+
+    @Test
     public void searchJSONCollection () throws IOException {
         // Construct index
         KrillIndex ki = new KrillIndex();
diff --git a/src/test/resources/queries/bugs/tokendistancespan_bug.jsonld b/src/test/resources/queries/bugs/tokendistancespan_bug.jsonld
new file mode 100644
index 0000000..7e442f8
--- /dev/null
+++ b/src/test/resources/queries/bugs/tokendistancespan_bug.jsonld
@@ -0,0 +1,109 @@
+{
+  "@context":"http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld",
+  "errors":[],
+  "warnings":[],
+  "messages":[
+    [303,"Deprecated 2014-07-24: 'min' and 'max' to be supported until 3 months from deprecation date."],
+    [303,"Deprecated 2014-07-24: 'min' and 'max' to be supported until 3 months from deprecation date."]
+  ],
+  "collection":{},
+  "query":{
+    "@type":"koral:group",
+    "operation":"operation:disjunction",
+    "operands":[
+      {
+	"@type":"koral:group",
+	"operation":"operation:class",
+	"classOut":1,
+	"operands":[
+	  {
+	    "@type":"koral:group",
+	    "operation":"operation:sequence",
+	    "operands":[
+	      {
+		"@type":"koral:token",
+		"wrap":{
+		  "@type":"koral:term",
+		  "layer":"orth",
+		  "key":"Mensch",
+		  "match":"match:eq"
+		}
+	      },
+	      {
+		"@type":"koral:token",
+		"wrap":{
+		  "@type":"koral:term",
+		  "layer":"orth",
+		  "key":"Stelle",
+		  "match":"match:eq"
+		}
+	      }
+	    ],
+	    "inOrder":true,
+	    "distances":[
+	      {
+		"@type":"koral:distance",
+		"key":"w",
+		"boundary":{
+		  "@type":"koral:boundary",
+		  "min":0
+		},
+		"min":0
+	      }
+	    ]
+	  }
+	]
+      },
+      {
+	"@type":"koral:group",
+	"operation":"operation:class",
+	"classOut":2,
+	"operands":[
+	  {
+	    "@type":"koral:group",
+	    "operation":"operation:sequence",
+	    "operands":[
+	      {
+		"@type":"koral:token",
+		"wrap":{
+		  "@type":"koral:term",
+		  "layer":"orth",
+		  "key":"Stelle",
+		  "match":"match:eq"
+		}
+	      },
+	      {
+		"@type":"koral:token",
+		"wrap":{
+		  "@type":"koral:term",
+		  "layer":"orth",
+		  "key":"Mensch",
+		  "match":"match:eq"
+		}
+	      }
+	    ],
+	    "inOrder":true,
+	    "distances":[
+	      {
+		"@type":"koral:distance",
+		"key":"w",
+		"boundary":{
+		  "@type":"koral:boundary",
+		  "min":0
+		},
+		"min":0
+	      }
+	    ]
+	  }
+	]
+      }
+    ]
+  },
+  "meta":{
+    "highlight":[1,2],
+    "startPage":1,
+    "count":25,
+    "cutOff":true,
+    "context":"base/s:p"
+  }
+}
