diff --git a/.gitignore b/.gitignore
index 149acc4..80db8ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@
 /src/test/java/de/ids_mannheim/korap/collection/TestWithExternalIndex.java
 /krill_cache/
 /vc
+/vc-cache
\ No newline at end of file
diff --git a/Changes b/Changes
index 467c752..3e77eb2 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,8 @@
-0.63.1 2024-06-24
+0.63.1 2024-08-02
     - [feature] Add fields array to matches in search responses (diewald)
     - [feature] Temporarily add all requested fields in flat legacy fields
       maps (diewald)
+    - [bugfix] Fix empty DocIdSetIterator (margaretha)
 
 0.63.0 2024-06-24
     - [bugfix] Show all inline markers and pagebreaks at match borders (diewald).
diff --git a/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java b/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java
index 6f93974..e1bef61 100644
--- a/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java
+++ b/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java
@@ -16,6 +16,8 @@
 import java.util.regex.Pattern;
 
 import org.apache.lucene.index.LeafReaderContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import de.ids_mannheim.korap.IndexInfo;
 import de.ids_mannheim.korap.Krill;
@@ -33,6 +35,9 @@
  */
 public class VirtualCorpusCache {
 
+    public final static Logger log = LoggerFactory
+            .getLogger(VirtualCorpusCache.class);
+    
     public static Pattern vcNamePattern = Pattern.compile("[a-zA-Z0-9]+[a-zA-Z_0-9-.]+");
 
     public static String CACHE_LOCATION = "vc-cache";
@@ -150,7 +155,7 @@
                     return docBitsSupplier.supplyDocBits(context,
                             context.reader().getLiveDocs());
                 }
-                catch (IOException | QueryException e) {
+                catch (Exception e) {
                     throw new RuntimeException(e);
                 }
             });
diff --git a/src/main/java/de/ids_mannheim/korap/collection/VirtualCorpusFilter.java b/src/main/java/de/ids_mannheim/korap/collection/VirtualCorpusFilter.java
index 4d7d9aa..15f9ec6 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/VirtualCorpusFilter.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/VirtualCorpusFilter.java
@@ -4,6 +4,7 @@
 
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.DocIdSet;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.Filter;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.FixedBitSet;
@@ -96,7 +97,10 @@
                 }
             }
             else {
-                bitset.or(docIdSet.iterator());
+                DocIdSetIterator docIdSetIterator = docIdSet.iterator();
+                if (docIdSetIterator != null) {
+                    bitset.or(docIdSetIterator);
+                }
                 if (cbi.isNegative()) {
                     bitset.flip(0, maxDoc);
                 }
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
index da7e158..c5d87f9 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
@@ -633,6 +633,24 @@
 	};
 	
     @Test
+    public void testEmptyDocIdSetIterator () throws IOException {
+        KrillIndex ki = new KrillIndex();
+        // Indexing test files
+        for (String i : new String[] { "00001", "00002", "00003", "00004",
+                "00005", "00006", "02439" }) {
+            ki.addDoc(getClass().getResourceAsStream("/wiki/" + i + ".json.gz"),
+                    true);
+        };
+        ki.commit();
+
+        String filename = "/queries/collections/vc-ref/query-with-vc-ref-klznkz66.jsonld";
+        String json = getJsonString(getClass().getResource(filename).getFile());
+        KrillCollection kc = new KrillCollection(json);
+        kc.setIndex(ki);
+        assertEquals(0, kc.numberOf("documents"));
+    }
+	
+    @Test
     public void filterExampleFromLegacy () throws Exception {
 
         // Construct index
diff --git a/src/test/resources/queries/collections/named-vcs/klznkz66.jsonld b/src/test/resources/queries/collections/named-vcs/klznkz66.jsonld
new file mode 100644
index 0000000..7ee0064
--- /dev/null
+++ b/src/test/resources/queries/collections/named-vcs/klznkz66.jsonld
@@ -0,0 +1 @@
+{"@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld","collection":{"@type":"koral:doc","type":"type:regex","match":"match:eq","key":"corpusSigle","value":"(K|O)[0-9][0-9]","comment":"name:\"klznkz66\",desc:\"klz und nkz 66%\""},"comment":"name:\"klznkz66\",desc:\"klz und nkz 66%\""}
\ No newline at end of file
diff --git a/src/test/resources/queries/collections/vc-ref/query-with-vc-ref-klznkz66.jsonld b/src/test/resources/queries/collections/vc-ref/query-with-vc-ref-klznkz66.jsonld
new file mode 100644
index 0000000..de17c08
--- /dev/null
+++ b/src/test/resources/queries/collections/vc-ref/query-with-vc-ref-klznkz66.jsonld
@@ -0,0 +1 @@
+{"meta":{},"warnings":[],"query":{},"messages":[],"collection":{"@type":"koral:docGroup","operation":"operation:and","operands":[{"ref":"klznkz66","@type":"koral:docGroupRef"},{"@type":"koral:doc","match":"match:eq","type":"type:regex","value":"QAO.*","key":"availability"}]},"@context":"http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld","errors":[]}
\ No newline at end of file
