diff --git a/src/main/java/de/ids_mannheim/korap/KorapQuery.java b/src/main/java/de/ids_mannheim/korap/KorapQuery.java
index e258f57..e0f0e67 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapQuery.java
@@ -71,6 +71,23 @@
 	this.json = new ObjectMapper();
     };
 
+    /**
+     * Private class for korap:boundary objects
+     */
+    private class Boundary {
+	public int min, max;
+
+	public Boundary (JsonNode json, int defaultMin, int defaultMax) throws QueryException {
+	    if (!json.has("@type") ||
+		!json.get("@type").asText().equals("korap:boundary")) {
+		throw new QueryException("Boundary definition is not valid");
+	    };
+
+	    min = json.get("min").asInt(defaultMin);
+	    max = json.get("max").asInt(defaultMax);
+	};
+    };
+
     public SpanQueryWrapperInterface fromJSON (String jsonString) throws QueryException {
 	JsonNode json;
 	try {
@@ -265,9 +282,16 @@
 
 	    case "operation:repetition":
 
-		// temporary
-		int min = json.get("min").asInt(1);
-		int max = json.get("max").asInt(1);
+		int min, max;
+		if (json.has("boundary")) {
+		    Boundary b = new Boundary(json.get("boundary"), 0, 100);
+		    min = b.min;
+		    max = b.max;
+		}
+		else {
+		    min = json.get("min").asInt(0);
+		    max = json.get("max").asInt(100);
+		};
 
 		// Sanitize max
 		if (max < 0)
@@ -279,18 +303,13 @@
 		if (min < 0)
 		    min = 0;
 		else if (min > 100)
-		    max = 100;
-
+		    min = 100;
+		
 		// Check relation between min and max
 		if (min > max)
 		    throw new QueryException("The maximum repetition value has to " +
 					     "be greater or equal to the minimum repetition value");
 
-		if (min == 0) {
-		    throw new QueryException(
-		        "Zero minimum of repetition is not supported yet");
-		};
-
 		return new SpanRepetitionQueryWrapper(
 		    this.fromJSON(operands.get(0)), min, max
 		);
