diff --git a/binary-strict.cabal b/binary-strict.cabal
--- a/binary-strict.cabal
+++ b/binary-strict.cabal
@@ -1,9 +1,9 @@
 name:            binary-strict
-version:         0.4.2
+version:         0.4.4
 license:         BSD3
 license-file:    LICENSE
 author:          Lennart Kolmodin <kolmodin@dtek.chalmers.se>
-maintainer:      Dominic Steinitz <dominic.steinitz@blueyonder.co.uk>
+maintainer:      Dominic Steinitz <dominic@steinitz.org>
 homepage:        http://code.haskell.org/binary-low-level
 description:     This is a strict version of the Get monad from the binary
                  package. It's pretty much just a copy and paste job from the
@@ -14,7 +14,7 @@
 		 documentation.
 synopsis:        Binary deserialisation using strict ByteStrings
 category:        Data, Parsing
-build-depends:   base, containers, array, bytestring>=0.9
+build-depends:   base<5, containers, array, bytestring>=0.9
 stability:       provisional
 tested-with:     GHC == 6.8.2
 exposed-modules: Data.Binary.BitPut
diff --git a/src/Data/Binary/Strict/BitGet.hs b/src/Data/Binary/Strict/BitGet.hs
--- a/src/Data/Binary/Strict/BitGet.hs
+++ b/src/Data/Binary/Strict/BitGet.hs
@@ -119,7 +119,7 @@
                         rightTruncateBits)
   if bitsRemaining < n
      then fail "Too few bits remain"
-     else do let bytesRequired = (n `div` 8) + (if boffInt + (n `mod` 8) > 0 then 1 else 0)
+     else do let bytesRequired = ((n - 1 + boffInt) `div` 8) + 1 -- (n `div` 8) + (if boffInt + (n `mod` 8) > 0 then 1 else 0)
                  boff' = (boffInt + n) `mod` 8
              let (r, rest) = if boff' == 0
                                 then B.splitAt bytesRequired bytes
diff --git a/src/Data/Binary/Strict/Get.hs b/src/Data/Binary/Strict/Get.hs
--- a/src/Data/Binary/Strict/Get.hs
+++ b/src/Data/Binary/Strict/Get.hs
@@ -101,10 +101,8 @@
 #endif
 
 -- | The parse state
-#ifndef __HADDOCK__
 data S = S {-# UNPACK #-} !B.ByteString  -- input
            {-# UNPACK #-} !Int  -- bytes read
-#endif
 
 newtype Get a = Get { unGet :: S -> (Either String a, S) }
 
diff --git a/src/Data/Binary/Strict/IncrementalGet.hs b/src/Data/Binary/Strict/IncrementalGet.hs
--- a/src/Data/Binary/Strict/IncrementalGet.hs
+++ b/src/Data/Binary/Strict/IncrementalGet.hs
@@ -100,13 +100,11 @@
 
 import qualified Data.Binary.Strict.Class as Class
 
-#ifndef __HADDOCK__
 -- | The parse state
-data S = S {-# UNPACK #-} !BL.ByteString  -- ^ input
-           {-# UNPACK #-} !Int  -- ^ bytes read
+data S = S {-# UNPACK #-} !BL.ByteString  -- input
+           {-# UNPACK #-} !Int  -- bytes read
            {-# UNPACK #-} ![B.ByteString]
-           {-# UNPACK #-} !Int  -- ^ the failure depth
-#endif
+           {-# UNPACK #-} !Int  -- the failure depth
 
 -- | The result of a partial parse
 data Result a = Failed String
