diff --git a/tempsdb/database.pyx b/tempsdb/database.pyx
index d79343ad2fc0114a04d89eda9dc15f8cecc69aa9..fd2e3f3fce5a463e40e8b01b5c1922ddc48de091 100644
--- a/tempsdb/database.pyx
+++ b/tempsdb/database.pyx
@@ -322,7 +322,7 @@ cdef class Database:
                 series.close()  # because already closed series won't close themselves
             self.open_series = {}
             for var_series in self.open_varlen_series.values():
-                var_series.close()
+                var_series.close(True)
             self.open_varlen_series = {}
         self.closed = True
         return 0
diff --git a/tempsdb/varlen.pxd b/tempsdb/varlen.pxd
index 1657cccf0e8cdb60dad88af8b784ae60e192489d..76990eda0e1f8d889550a3b8cf5d29bbdf4c8846 100644
--- a/tempsdb/varlen.pxd
+++ b/tempsdb/varlen.pxd
@@ -18,7 +18,7 @@ cdef class VarlenSeries:
         int gzip_level
 
     cpdef int mark_synced_up_to(self, unsigned long long timestamp) except -1
-    cpdef int close(self) except -1
+    cpdef int close(self, bint force=*) except -1
     cpdef int delete(self) except -1
     cpdef tuple get_current_value(self)
     cdef int get_length_for(self, int index)
diff --git a/tempsdb/varlen.pyx b/tempsdb/varlen.pyx
index 99d252cb91faebdfedb93d4c298caa8655730ed0..36c9f1d2504fba9e831b8b1c8fd39e1b49f0973b 100644
--- a/tempsdb/varlen.pyx
+++ b/tempsdb/varlen.pyx
@@ -300,6 +300,7 @@ cdef class VarlenIterator:
     def __init__(self, parent: VarlenSeries, start: int, stop: int,
                  direct_bytes: bool = False):
         self.parent = parent
+        self.parent.references += 1
         self.start = start
         self.stop = stop
         self.direct_bytes = direct_bytes
@@ -596,18 +597,20 @@ cdef class VarlenSeries:
         """
         return self.length_profile[-1 if index >= len(self.length_profile) else index]
 
-    cpdef int close(self) except -1:
+    cpdef int close(self, bint force=False) except -1:
         """
         Close this series.
         
         No-op if already closed.
         
+        :param force: set to True to ignore open references
+        
         :raises StillOpen: some references are being held
         """
         if self.closed:
             return 0
 
-        if self.references:
+        if self.references and not force:
             raise StillOpen('still some iterators around')
 
         self.closed = True
diff --git a/tests/test_database.py b/tests/test_database.py
index 24ab2462861957af578be56a14c5145613e75d76..c46991e51c5020faf251201fe80c4532c82c2874 100644
--- a/tests/test_database.py
+++ b/tests/test_database.py
@@ -31,7 +31,6 @@ class TestDatabase(unittest.TestCase):
 
         ser = self.db.get_varlen_series('hello-world')
         self.assertEqual(ser.get_current_value(), (20, b'\x00\x00\x00'))
-        self.assertEqual(ser.last_entry_ts, 20)
         ser.close()
 
         self.db.delete_varlen_series('hello-world')