diff --git a/python/local/ovms_module/ovms/fatdef/__init__.py b/python/local/ovms_module/ovms/fatdef/__init__.py
index 5d7d55d0d9c3e4f7f8cdd5799031e1c126017f89_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvZmF0ZGVmL19faW5pdF9fLnB5..b13b326baa08848566cf06aa02806bd8a321f537_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvZmF0ZGVmL19faW5pdF9fLnB5 100644
--- a/python/local/ovms_module/ovms/fatdef/__init__.py
+++ b/python/local/ovms_module/ovms/fatdef/__init__.py
@@ -95,4 +95,5 @@
 
 
 class FAT(Structure):
+    _pack_ = 1
     _fields_ = [
@@ -98,9 +99,9 @@
     _fields_ = [
-        ("fat_b_rtype", c_ushort),  # record type
-        ("fat_v_fortrancc", c_int, 1),  # fat$v_fortrancc
-        ("fat_v_impliedcc", c_int, 1),  # implied carriage control
-        ("fat_v_fat$v_printcc", c_int, 1),  # print file carriage control
-        ("fat_v_nospan", c_int, 1),  # print file carriage control
-        ("fat_v_msbrcw", c_int, 1),  # Format of RCW (0=LSB, 1=MSB)
-        ("fat_v_fill_1", c_int, 3),  # MBZ (or should be zero)
+        ("fat_b_rtype", c_ubyte),  # record type
+        ("fat_v_fortrancc", c_ubyte, 1),  # fat$v_fortrancc
+        ("fat_v_impliedcc", c_ubyte, 1),  # implied carriage control
+        ("fat_v_printcc", c_ubyte, 1),  # print file carriage control
+        ("fat_v_nospan", c_ubyte, 1),  # print file carriage control
+        ("fat_v_msbrcw", c_ubyte, 1),  # Format of RCW (0=LSB, 1=MSB)
+        ("fat_v_fill_1", c_ubyte, 3),  # MBZ (or should be zero)
         ("fat_w_rsize", c_ushort),  # MBZ (or should be zero)
@@ -106,6 +107,8 @@
         ("fat_w_rsize", c_ushort),  # MBZ (or should be zero)
-        ("fat_l_hiblk", c_ulong),  # highest allocated VBN
-        ("fat_l_efblk", c_ulong),  #  end of file VBN
+        ("fat_l_hiblkh", c_ushort),  # highest allocated VBN high order word
+        ("fat_l_hiblkl", c_ushort),  # highest allocated VBN low order word
+        ("fat_l_efblkh", c_ushort),  #  end of file VBN high order word
+        ("fat_l_efblkl", c_ushort),  #  end of file VBN low order word
         ("fat_w_ffbyte", c_ushort),  # first free byte in EFBLK
         ("fat_b_bktsize", c_ubyte),  # bucket size in blocks
         (
@@ -117,8 +120,8 @@
         ("fat_w_gbc", c_ushort),  # global buffer count (original word)
         (
             "fat_v_gbc_percent",
-            c_int,
+            c_ubyte,
             1,
         ),  # Interpret value in GBC32 as percent instead of count
         (
             "fat_v_gbc_default",
@@ -121,7 +124,7 @@
             1,
         ),  # Interpret value in GBC32 as percent instead of count
         (
             "fat_v_gbc_default",
-            c_int,
+            c_ubyte,
             1,
         ),  # RMS should set default for GBC at runtime and ignore
@@ -126,6 +129,6 @@
             1,
         ),  # RMS should set default for GBC at runtime and ignore
-        ("fat___fill_4", c_int, 6),  # Reserved for future use
+        ("fat___fill_4", c_ubyte, 6),  # Reserved for future use
         (
             "fat___fill_2",
             c_ubyte,