diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
index c743157..7f4251b 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
@@ -19,6 +19,7 @@
 import de.ids_mannheim.korap.query.QueryBuilder;
 import de.ids_mannheim.korap.Krill;
 import de.ids_mannheim.korap.KrillIndex;
+import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.SpanRepetitionQuery;
 import de.ids_mannheim.korap.response.Match;
@@ -422,6 +423,28 @@
     };
 
 
+    @Test
+    public void testRepetitionWithClassHighlights () throws IOException {
+        KrillIndex ki = new KrillIndex();
+        ki.addDoc(simpleFieldDoc("aab"));
+        ki.commit();
+
+        // spanRepetition({1: a}{1,2}) — repetition wrapping class ({a}+)
+        SpanQuery sq = new SpanRepetitionQuery(
+                new SpanClassQuery(
+                        new SpanTermQuery(new Term("base", "s:a")),
+                        (byte) 1),
+                1, 2, true);
+
+        Result kr = ki.search(sq, (short) 10);
+        assertEquals(3, kr.getTotalResults());
+        assertEquals("[[{1:a}]]ab", kr.getMatch(0).getSnippetBrackets());
+        // This still separates the two 'a's
+        assertEquals("[[{1:a}{1:a}]]b", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("a[[{1:a}]]b", kr.getMatch(2).getSnippetBrackets());
+    };
+
+
     /**
      * This method creates a corpus using fuzzing to
      * check for unexpected, failing constellations
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
index 4967eca..5947790 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -880,4 +880,39 @@
             "spanNext(SpanMultiTermQueryWrapper(tokens:/tt/p:NN/), spanExpansion(SpanMultiTermQueryWrapper(tokens:/tt/p:NN/), []{0, 100}, left))",
             sqwi.toQuery().toString());
     };
+
+    @Test
+    public void queryJSONrepetitionClass () throws QueryException {
+        // {Wald}+ repetition wrapping class
+        SpanQueryWrapper sqwi = getJsonQuery(getClass()
+                .getResource("/queries/bugs/repetition_class.jsonld").getFile());
+
+        assertEquals(
+            "spanRepetition({1: tokens:s:Wald}{1,100})",
+            sqwi.toQuery().toString());
+    };
+
+
+    @Test
+    public void queryJSONclassRepetition () throws QueryException {
+        // {Wald+} class wrapping repetition
+        SpanQueryWrapper sqwi = getJsonQuery(getClass()
+                .getResource("/queries/bugs/class_repetition.jsonld").getFile());
+
+        assertEquals(
+            "{1: spanRepetition(tokens:s:Wald{1,100})}",
+            sqwi.toQuery().toString());
+    };
+
+
+    @Test
+    public void queryJSONrepetitionClassWithBounds () throws QueryException {
+        // {Wald}{2,3} repetition wrapping class with explicit bounds
+        SpanQueryWrapper sqwi = getJsonQuery(getClass()
+                .getResource("/queries/bugs/repetition_class_2.jsonld").getFile());
+
+        assertEquals(
+            "spanRepetition({2: tokens:s:Wald}{2,3})",
+            sqwi.toQuery().toString());
+    };
 };
diff --git a/src/test/resources/queries/bugs/class_repetition.jsonld b/src/test/resources/queries/bugs/class_repetition.jsonld
new file mode 100644
index 0000000..40d5f23
--- /dev/null
+++ b/src/test/resources/queries/bugs/class_repetition.jsonld
@@ -0,0 +1,28 @@
+{
+  "query": {
+    "@type": "koral:group",
+    "classOut": 1,
+    "operands": [
+      {
+        "@type": "koral:group",
+        "boundary": {
+          "@type": "koral:boundary",
+          "min": 1
+        },
+        "operands": [
+          {
+            "@type": "koral:token",
+            "wrap": {
+              "@type": "koral:term",
+              "key": "Wald",
+              "layer": "orth",
+              "match": "match:eq"
+            }
+          }
+        ],
+        "operation": "operation:repetition"
+      }
+    ],
+    "operation": "operation:class"
+  }
+}
diff --git a/src/test/resources/queries/bugs/repetition_class.jsonld b/src/test/resources/queries/bugs/repetition_class.jsonld
new file mode 100644
index 0000000..e4a695d
--- /dev/null
+++ b/src/test/resources/queries/bugs/repetition_class.jsonld
@@ -0,0 +1,28 @@
+{
+  "query": {
+    "@type": "koral:group",
+    "boundary": {
+      "@type": "koral:boundary",
+      "min": 1
+    },
+    "operands": [
+      {
+        "@type": "koral:group",
+        "classOut": 1,
+        "operands": [
+          {
+            "@type": "koral:token",
+            "wrap": {
+              "@type": "koral:term",
+              "key": "Wald",
+              "layer": "orth",
+              "match": "match:eq"
+            }
+          }
+        ],
+        "operation": "operation:class"
+      }
+    ],
+    "operation": "operation:repetition"
+  }
+}
diff --git a/src/test/resources/queries/bugs/repetition_class_2.jsonld b/src/test/resources/queries/bugs/repetition_class_2.jsonld
new file mode 100644
index 0000000..9aa9278
--- /dev/null
+++ b/src/test/resources/queries/bugs/repetition_class_2.jsonld
@@ -0,0 +1,29 @@
+{
+  "query": {
+    "@type": "koral:group",
+    "boundary": {
+      "@type": "koral:boundary",
+      "min": 2,
+      "max": 3
+    },
+    "operands": [
+      {
+        "@type": "koral:group",
+        "classOut": 2,
+        "operands": [
+          {
+            "@type": "koral:token",
+            "wrap": {
+              "@type": "koral:term",
+              "key": "Wald",
+              "layer": "orth",
+              "match": "match:eq"
+            }
+          }
+        ],
+        "operation": "operation:class"
+      }
+    ],
+    "operation": "operation:repetition"
+  }
+}
