diff --git a/basen-bytestring.cabal b/basen-bytestring.cabal
--- a/basen-bytestring.cabal
+++ b/basen-bytestring.cabal
@@ -1,5 +1,5 @@
 name:           basen-bytestring
-version:        0.1.0.0
+version:        0.1.0.1
 description:    Base-N ByteStrings for base{16,32,58,64}
 homepage:       https://github.com/FilWisher/basen-bytestring#readme
 bug-reports:    https://github.com/FilWisher/basen-bytestring/issues
diff --git a/src/Data/ByteString/BaseN.hs b/src/Data/ByteString/BaseN.hs
--- a/src/Data/ByteString/BaseN.hs
+++ b/src/Data/ByteString/BaseN.hs
@@ -92,7 +92,7 @@
           loop (sp `plusPtr` chunksize) (dp `plusPtr` advance)
     dfp <- Internal.mallocByteString dlen
     withForeignPtr dfp $ \dptr -> do
-      loop sptr dptr
+      loop (sptr `plusPtr` soff) dptr
       return $ Internal.PS dfp 0 dlen
 
 byChunkErr :: 
@@ -115,4 +115,4 @@
             Left err -> return $ Left err
             Right n -> loop (sp `plusPtr` chunksize) (dp `plusPtr` n)
     dfp <- Internal.mallocByteString dlen
-    fmap (Internal.PS dfp 0) <$> withForeignPtr dfp (loop sptr)
+    fmap (Internal.PS dfp 0) <$> withForeignPtr dfp (loop $ sptr `plusPtr` soff)
diff --git a/test/Properties.hs b/test/Properties.hs
--- a/test/Properties.hs
+++ b/test/Properties.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE OverloadedStrings #-}
 
 import Test.QuickCheck (Arbitrary(..), choose, forAll)
 import Test.QuickCheck.All (quickCheckAll)
@@ -22,6 +23,28 @@
 prop_base16_inverse bs =
   either (const False) (bs==)
     $ Base16.decode $ Base16.encode bs
+
+inverse ::
+  (B8.ByteString -> B8.ByteString) ->
+  (B8.ByteString -> Either String B8.ByteString) ->
+  B8.ByteString ->
+  Bool
+inverse encode decode bs =
+  let
+    enc = encode bs
+    long = "--%" `B8.append` encode bs
+    [pre,post] = B8.split '%' long
+  in
+    either (const False) (bs==) (decode post)
+
+prop_base16_inverse_split :: B8.ByteString -> Bool
+prop_base16_inverse_split = inverse Base16.encode Base16.decode
+
+prop_base32_inverse_split :: B8.ByteString -> Bool
+prop_base32_inverse_split = inverse Base32.encode Base32.decode
+
+prop_base64_inverse_split :: B8.ByteString -> Bool
+prop_base64_inverse_split = inverse Base64.encode Base64.decode
 
 prop_base32_inverse :: B8.ByteString -> Bool
 prop_base32_inverse bs =
