diff --git a/km3io/offline.py b/km3io/offline.py
index 6823a5d1aabf514e02509f24a05fa8ab8f9c6d4e..ee868ef9402aa4d2487b1449b710df202aaad51f 100644
--- a/km3io/offline.py
+++ b/km3io/offline.py
@@ -570,8 +570,15 @@ class OfflineTracks:
             setattr(self, k, v)
 
     def __getitem__(self, item):
-        return OfflineTrack(self._keys, [v[item] for v in self._values],
-                            fit_keys=self._fit_keys)
+        if isinstance(item, int):
+            return OfflineTrack(self._keys, [v[item] for v in self._values],
+                                fit_keys=self._fit_keys)
+        else:
+            return OfflineTracks(
+                self._keys,
+                [v[item] for v in self._values],
+                fit_keys=self._fit_keys
+            )
 
     def __len__(self):
         try:
diff --git a/tests/test_offline.py b/tests/test_offline.py
index a95f5d7b8d823249894f38e84d1ed930987b79f5..9c73dbf05def6e8397531fa70c6863502e6b97ab 100644
--- a/tests/test_offline.py
+++ b/tests/test_offline.py
@@ -309,8 +309,10 @@ class TestOfflineTracks(unittest.TestCase):
     def test_slicing(self):
         tracks = self.tracks
         assert 10 == len(tracks)
-        track_selection = tracks[2:4]
-        assert 3 == len(track_selection)
+        track_selection = tracks[2:7]
+        assert 5 == len(track_selection)
+        track_selection_2 = tracks[1:3]
+        assert 2 == len(track_selection_2)
 
 
 class TestOfflineTrack(unittest.TestCase):