diff --git a/Graphics/HsExif.hs b/Graphics/HsExif.hs
--- a/Graphics/HsExif.hs
+++ b/Graphics/HsExif.hs
@@ -453,9 +453,14 @@
 parseOffset byteAlign tiffHeaderStart handler entry = do
     let contentsInt = fromIntegral $ toInteger $ entryContents entry
     curPos <- fromIntegral <$> bytesRead
-    skip $ contentsInt + tiffHeaderStart - curPos
-    bytestring <- getLazyByteString (fromIntegral $ entryNoComponents entry * dataLength handler)
-    return $ parseInline byteAlign handler entry bytestring
+    -- this skip can take me quite far and I can't skip
+    -- back with binary. So do the skip with a lookAhead.
+    -- see https://github.com/emmanueltouzery/hsexif/issues/9
+    lookAhead $ do
+        skip (contentsInt + tiffHeaderStart - curPos)
+        let bsLength = entryNoComponents entry * dataLength handler
+        bytestring <- getLazyByteString (fromIntegral bsLength)
+        return (parseInline byteAlign handler entry bytestring)
 
 signedInt32ToInt :: Word32 -> Int
 signedInt32ToInt w = fromIntegral (fromIntegral w :: Int32)
diff --git a/hsexif.cabal b/hsexif.cabal
--- a/hsexif.cabal
+++ b/hsexif.cabal
@@ -1,5 +1,5 @@
 name:                hsexif
-version:             0.6.0.5
+version:             0.6.0.6
 synopsis:            EXIF handling library in pure Haskell
 description:         The hsexif library provides functions for working with EXIF data
                      contained in JPEG files. Currently it only supports reading the data.
@@ -44,7 +44,7 @@
   default-language:    Haskell2010
   build-depends:       base,
                        hspec,
-                       HUnit >= 1.2 && <1.3,
+                       HUnit >= 1.2 && <1.4,
                        binary >=0.7 && <0.8,
                        bytestring >=0.10 && <0.11,
                        containers >= 0.5 && <0.6,
