diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp
index 83b5e8f2..3685782d 100644
--- a/lib/dtscmeta.cpp
+++ b/lib/dtscmeta.cpp
@@ -903,8 +903,14 @@ namespace DTSC {
   }
 
   ///\brief returns the offset of a part
+  ///Assumes the offset is actually negative if bit 0x800000 is set.
   uint32_t Part::getOffset() {
-    return Bit::btoh24(data + 6);
+    uint32_t ret = Bit::btoh24(data + 6);
+    if (ret & 0x800000){
+      return ret | 0xff000000ul;
+    }else{
+      return ret;
+    }
   }
 
   ///\brief Sets the offset of a part