diff --git a/src/filo-fs-iso9660.adb b/src/filo-fs-iso9660.adb
index ad462f0..eb21610 100644
--- a/src/filo-fs-iso9660.adb
+++ b/src/filo-fs-iso9660.adb
@@ -23,22 +23,14 @@
 
    procedure Read
      (Buf      :    out Buffer_Type;
-      Block    : in     FSBlock;
-      Offset   : in     FSBlock_Index;
-      FS_Len   : in     Partition_Length;
+      Rec      : in     FS_Record;
       Success  :    out Boolean)
    with
-      Pre => Buf'Length <= FSBlock_Size - Offset
+      Pre => Buf'Length <= Rec.Size
    is
-      Block_64 : constant Integer_64 := Integer_64 (Block);
-      Offset_64 : constant Integer_64 := Integer_64 (Offset);
-      Max_Block_Offset : constant Integer_64 := Integer_64 (FS_Len) / FSBlock_Size - 1;
+      Block_64 : constant Integer_64 := Integer_64 (Rec.Block);
+      Offset_64 : constant Integer_64 := Integer_64 (Rec.Offset);
    begin
-      if Block_64 > Max_Block_Offset then
-         Buf := (others => 16#00#);
-         Success := False;
-         return;
-      end if;
       Blockdev.Read (Buf, Blockdev_Length (Block_64 * FSBlock_Size + Offset_64), Success);
    end Read;
 
@@ -71,8 +63,9 @@
             Success := False;
             return;
          end if;
+         Static.Part_Len := Part_Len;
 
-         Read (Volume_Descriptor, Block, 0, Part_Len, Success);
+         Read (Volume_Descriptor, FS_Record'(Block, 0, FSBlock_Size), Success);
          if not Success then
             return;
          end if;
@@ -94,8 +87,7 @@
          end if;
       end loop;
 
-      Static.Part_Len := Part_Len;
-      Static.Root_Inode := (Block, 156);
+      Static.Root_Inode := (Block, 156, Directory_Record'Length);
 
       State.S := Mounted;
    end Mount;
@@ -108,7 +100,6 @@
       Pre => Is_Mounted (State),
       Post => Is_Mounted (State) and (Success = Is_Open (State))
    is
-      Static : Mount_State renames State.Static;
       Inode : Inode_Info renames State.Inode;
 
       Dir_Rec : Directory_Record;
@@ -117,7 +108,7 @@
 
       Inode := (I, others => <>);
 
-      Read (Dir_Rec, I.Block, I.Offset, Static.Part_Len, Success);
+      Read (Dir_Rec, I, Success);
       if not Success then
          return;
       end if;
@@ -311,8 +302,9 @@
 
                   if Success then
                      Found_Inode :=
-                       (Block => FSBlock (Dir_Pos / FSBlock_Size) + State.Inode.Extents (0).Start,
-                        Offset => FSBlock_Index (Dir_Pos mod FSBlock_Size));
+                       (Block  => FSBlock (Dir_Pos / FSBlock_Size) + State.Inode.Extents (0).Start,
+                        Offset => FSBlock_Index (Dir_Pos mod FSBlock_Size),
+                        Size   => Dir_Rec_Length);
                      exit;
                   end if;
 
@@ -404,9 +396,7 @@
             begin
                Read
                  (Buf      => Buf (Pos .. Last),
-                  Block    => Physical,
-                  Offset   => In_Block,
-                  FS_Len   => Static.Part_Len,
+                  Rec      => FS_Record'(Physical, In_Block, In_Block_Space),
                   Success  => Success);
                exit when not Success;
 
diff --git a/src/filo-fs-iso9660.ads b/src/filo-fs-iso9660.ads
index 0a28cc2..480ce39 100644
--- a/src/filo-fs-iso9660.ads
+++ b/src/filo-fs-iso9660.ads
@@ -49,22 +49,31 @@
    type State is (Unmounted, Mounted, File_Opened);
 
    FSBlock_Size : constant := 2048;
+   subtype FSBlock_Length is Index_Type range 0 .. FSBlock_Size;
    subtype FSBlock_Index is Index_Type range 0 .. FSBlock_Size - 1;
 
    type FSBlock_Count is range 0 .. 2 ** 32 - 1;
    subtype FSBlock is FSBlock_Count range 0 .. FSBlock_Count'Last - 1;
    type FSBlock_Logical is new FSBlock;
 
+   type FS_Record is record
+      Block    : FSBlock := 0;
+      Offset   : FSBlock_Length := 0;
+      Size     : FSBlock_Length := 0;
+   end record
+   with
+      Dynamic_Predicate =>
+         Size <= FSBlock_Size - Offset;
+
    subtype Directory_Record_Range is Index_Type range 0 .. 32;
    subtype Directory_Record is Buffer_Type (Directory_Record_Range);
    subtype Directory_Record_Offset is FSBlock_Index
       range 0 .. FSBlock_Size - Directory_Record'Length;
 
    -- We'll use the absolute position of the dir record
-   type Inode_Index is record
-      Block : FSBlock := 0;
-      Offset : Directory_Record_Offset := 0;
-   end record;
+   subtype Inode_Index is FS_Record
+   with
+      Dynamic_Predicate => Inode_Index.Offset <= Directory_Record_Offset'Last;
    type Inode_Length is range 0 .. FSBlock_Count'Last * FSBlock_Size;
 
    type Mount_State is record
