Updated relation PTIs in tests.
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
index 1411f60..7490dec 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
@@ -23,7 +23,9 @@
     private int position;
     private CandidateSpan childSpan; // used for example for multiple distance
                                      // with unordered constraint
-    protected short spanId;
+	protected short spanId;
+	protected boolean hasSpanId;
+
     private short leftId, rightId;
     private int leftStart, leftEnd;
     private int rightStart, rightEnd;
@@ -50,9 +52,11 @@
         if (span instanceof SimpleSpans) {
             SimpleSpans temp = (SimpleSpans) span;
             this.spanId = temp.getSpanId();
+			this.hasSpanId = temp.hasSpanId;
         }
         else if (span instanceof ClassSpans) {
             this.spanId = ((ClassSpans) span).getNumber();
+			this.hasSpanId = true;
         }
     }
 
@@ -297,6 +301,8 @@
      */
     public void setSpanId (short spanId) {
         this.spanId = spanId;
+		if (spanId > 0)
+			this.hasSpanId = true;
     }
 
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
index 6ec374e..b73f186 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
@@ -121,6 +121,7 @@
 			// silently setting empty element and payload
             this.matchEndPosition = this.matchStartPosition;
             this.setSpanId((short) -1);
+			this.hasSpanId = false;
             this.matchPayload = null;
             return;
 		}
@@ -141,6 +142,7 @@
 			}
             else {
                 this.setSpanId((short) -1);
+				this.hasSpanId = false;
             }
 
 			// FIX ME
@@ -152,6 +154,7 @@
 
         this.matchEndPosition = this.matchStartPosition;
         this.setSpanId((short) -1);
+		this.hasSpanId = false;
         this.matchPayload = null;
     };
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
index 02d9656..72cfc82 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
@@ -127,8 +127,8 @@
                 this.matchEndPosition = cs.getEnd();
                 this.matchPayload = cs.getPayloads();
                 this.setRightStart(cs.getRightStart());
-                this.setRightEnd(cs.getRightEnd());
-                this.spanId = cs.getSpanId(); // relation id
+				this.setRightEnd(cs.getRightEnd());
+				this.spanId = cs.getSpanId(); // relation id
                 this.leftId = cs.getLeftId();
                 this.rightId = cs.getRightId();
                 candidateList.remove(0);
@@ -193,12 +193,22 @@
             cs.setLeftEnd(cs.start + 1);
             cs.setRightStart(i);
             cs.setRightEnd(i + 1);
+			cs.setLeftId(bb.getShort(5)); // left id
+			cs.setRightId(bb.getShort(7)); // right id
+			if (length > 9) {
+				cs.setSpanId(bb.getShort(9)); // relation id
+			}
         }
         else if (payloadTypeIdentifier == PayloadTypeIdentifier.TERM_TO_ELEMENT.value) { // length
             // 15
             cs.setLeftEnd(cs.start + 1);
             cs.setRightStart(bb.getInt(1));
             cs.setRightEnd(bb.getInt(5));
+			cs.setLeftId(bb.getShort(9)); // left id
+			cs.setRightId(bb.getShort(11)); // right id
+			if (length > 13) {
+				cs.setSpanId(bb.getShort(13)); // relation id
+			}
         }
         else if (payloadTypeIdentifier == PayloadTypeIdentifier.ELEMENT_TO_TERM.value) { // length
             // 15
@@ -207,17 +217,26 @@
             i = bb.getInt(5);
             cs.setRightStart(i);
             cs.setRightEnd(i + 1);
+			cs.setLeftId(bb.getShort(9)); // left id
+			cs.setRightId(bb.getShort(11)); // right id
+			if (length > 13) {
+				cs.setSpanId(bb.getShort(13)); // relation id
+			}
         }
         else if (payloadTypeIdentifier == PayloadTypeIdentifier.ELEMENT_TO_ELEMENT.value) {
+			// length 19
             cs.setEnd(bb.getInt(1));
             cs.setLeftEnd(cs.end);
             cs.setRightStart(bb.getInt(5));
             cs.setRightEnd(bb.getInt(9));
-        }
+			cs.setLeftId(bb.getShort(13)); // left id
+			cs.setRightId(bb.getShort(15)); // right id
+			if (length > 17) {
+				cs.setSpanId(bb.getShort(17)); // relation id
+			}
+		}
 
-        cs.setRightId(bb.getShort(length - 2)); //right id
-        cs.setLeftId(bb.getShort(length - 4)); //left id
-        cs.setSpanId(bb.getShort(length - 6)); //relation id
+
         // Payload is cleared.
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java b/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
index c38b332..e58f59d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
@@ -238,8 +238,12 @@
      */
     private boolean searchSpanPosition () throws IOException {
         while (hasMoreSpans) {
-            if (referentSpans.getSpanId() < 1) { // the element does not have an attribute
-                hasMoreSpans = referentSpans.next();
+			// the element does not have an attribute
+			if (referentSpans.getSpanId() < 1) {
+				if (attributeList.size() == 0 || notAttributeList.size() > 0) {
+					return true;
+				}
+				hasMoreSpans = referentSpans.next();
                 continue;
             }
             if (checkAttributeListPosition()) {