diff --git a/tempsdb/varlen.pyx b/tempsdb/varlen.pyx
index b1df106e51e1ffe45ce9f94ab8c725d69432130a..6ca068a8d769e926116f668b8bef44399b4fae7c 100644
--- a/tempsdb/varlen.pyx
+++ b/tempsdb/varlen.pyx
@@ -85,6 +85,7 @@ cdef class VarlenEntry:
                 return False
 
         cdef bytes b = self.slice(self.len-len_v, self.len)
+        logger.warning('comparing %s against %s', repr(b), repr(v))
         return b == v
 
     def __gt__(self, other) -> bool:
@@ -196,19 +197,24 @@ cdef class VarlenEntry:
             bytes temp_data
             int offset = self.parent.size_field
 
-        while write_pointer < length and len(self.chunks) > segment:
+        while write_pointer < length:
             if chunk_len-start_reading_at >= + (length - write_pointer):
                 # We have all the data that we require
-                temp_data = chunk.get_slice_of_piece_at(self.item_no[segment],
-                                                        offset, offset+length-write_pointer)
+                try:
+                    temp_data = chunk.get_slice_of_piece_at(self.item_no[segment],
+                                                            offset, offset+length-write_pointer)
+                except IndexError:
+                    raise ValueError('Invalid indices')
                 assert len(temp_data) == length-write_pointer, 'invalid length'
                 b[write_pointer:length] = temp_data
                 return bytes(b)
 
             if chunk_len > length - write_pointer:
                 chunk_len = length - write_pointer
-
-            temp_data = chunk.get_slice_of_piece_at(self.item_no[segment], offset, offset+chunk_len)
+            try:
+                temp_data = chunk.get_slice_of_piece_at(self.item_no[segment], offset, offset+chunk_len)
+            except IndexError:
+                raise ValueError('Invalid indices')
             b[write_pointer:write_pointer+chunk_len] = temp_data
             write_pointer += chunk_len
             segment += 1
diff --git a/tests/test_varlen.py b/tests/test_varlen.py
index ace8d4516e74d6a716ab5b6092dddc06ae729204..e0b98ad4d0b8e76c03d4b0f8f78a495e9fa86e12 100644
--- a/tests/test_varlen.py
+++ b/tests/test_varlen.py
@@ -29,6 +29,8 @@ class TestVarlen(unittest.TestCase):
         varlen.append(*series[0])
         varlen.append(*series[1])
 
+        self.assertEqual(varlen.last_entry_ts, 10)
+
         with varlen.iterate_range(0, 20) as iterator:
             ve = iterator.get_next()
             while ve is not None: