diff --git a/src/robofish/io/app.py b/src/robofish/io/app.py
index d4634948dd740276eb6d910f86778db1188883a8..0518dedd81d5f9c4842583d1e687b14d7e353d4a 100644
--- a/src/robofish/io/app.py
+++ b/src/robofish/io/app.py
@@ -94,8 +94,8 @@ def validate(args=None):
     error_code = 0
     for file, sf in sf_dict.items():
         filled_file = (str)(file).ljust(max_filename_width + 3)
-        file.close()
         validity, validity_message = sf.validate(strict_validate=False)
+        sf.close()
         if not validity:
             error_code = 1
         print(f"{filled_file}:{validity}\t{validity_message}")
diff --git a/src/robofish/io/file.py b/src/robofish/io/file.py
index d5ba5f909546bff5cca54116ab9491d424454370..0637e8961c5125d92d90979afecb5243e9e150bf 100644
--- a/src/robofish/io/file.py
+++ b/src/robofish/io/file.py
@@ -752,8 +752,11 @@ class File(h5py.File):
             elif isinstance(c, list):
                 this_c = c[fish_id]
 
-            if max_timesteps is None:
-                max_timesteps = poses.shape[1] - 1
+            max_timesteps = (
+                min(max_timesteps, poses.shape[1] - 1)
+                if max_timesteps is not None
+                else poses.shape[1] - 1
+            )
             timesteps = min(max_timesteps + skip_timesteps, poses.shape[1] - 1)
             for t in range(skip_timesteps, timesteps, step_size):
                 if lw_distances: