diff --git a/Network/CommSec/KeyExchange/Internal.hs b/Network/CommSec/KeyExchange/Internal.hs
--- a/Network/CommSec/KeyExchange/Internal.hs
+++ b/Network/CommSec/KeyExchange/Internal.hs
@@ -112,10 +112,12 @@
                 bk = maybe (error "failed to build key") id . buildKey
             in (bk key1tmp, bk key2tmp, op salt1tmp, op salt2tmp)
         msg2     = buildSigMessage aesKey1 privateMe ay ax
-        outCtx   = Out (B.length msg2 `div` (blockSizeBytes `for` aesKey1))  salt1 aesKey1
-        inCtx    = InStrict (B.length encSaAxAy `div` (blockSizeBytes `for` aesKey2)) salt2 aesKey2
+        outCtr   = fromIntegral $ B.length msg2 `div` (blockSizeBytes `for` aesKey1)
+        outCtx   = Out outCtr  salt1 aesKey1
     sendMsg sock (runPut $ put ay >> put msg2)
     encSaAxAy <- recvMsg sock
+    let inCtr    = fromIntegral $ B.length encSaAxAy `div` (blockSizeBytes `for` aesKey2)
+        inCtx    = InStrict inCtr salt2 aesKey2
     case parseSigMessage aesKey2 thems encSaAxAy ax ay of
         Just t  -> return (Just (t, outCtx, inCtx))
         Nothing -> return Nothing
@@ -160,8 +162,10 @@
                 bk = maybe (error "failed to build key") id . buildKey
             in (bk key1tmp, bk key2tmp, op salt1tmp, op salt2tmp)
         msg3     = buildSigMessage aesKey2 privateMe ax ay
-        outCtx   = Out (B.length msg3 `div` (blockSizeBytes `for` aesKey2)) salt2 aesKey2
-        inCtx    = InStrict (B.length encSbAyAx `div` (blockSizeBytes `for` aesKey2)) salt1 aesKey1
+        outCtr   = fromIntegral $ B.length msg3 `div` (blockSizeBytes `for` aesKey2)
+        outCtx   = Out outCtr salt2 aesKey2
+        inCtr    = fromIntegral $ B.length encSbAyAx `div` (blockSizeBytes `for` aesKey1)
+        inCtx    = InStrict inCtr salt1 aesKey1
     case parseSigMessage aesKey1 thems encSbAyAx ay ax of
         Just t -> do
             sendMsg sock msg3
diff --git a/commsec-keyexchange.cabal b/commsec-keyexchange.cabal
--- a/commsec-keyexchange.cabal
+++ b/commsec-keyexchange.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                commsec-keyexchange
-version:             0.3
+version:             0.3.1
 synopsis:            Key agreement for commsec.
 description:         Use RSA keys to authenticate a key exchange to
                      establish a commsec 'Connection'.  This package comes with
