diff --git a/sbp.cabal b/sbp.cabal
--- a/sbp.cabal
+++ b/sbp.cabal
@@ -1,5 +1,5 @@
 name:                  sbp
-version:               0.50.4
+version:               0.50.5
 synopsis:              SwiftNav's SBP Library
 homepage:              https://github.com/swift-nav/libsbp
 license:               LGPL-3
diff --git a/src/SwiftNav/CRC16.hs b/src/SwiftNav/CRC16.hs
--- a/src/SwiftNav/CRC16.hs
+++ b/src/SwiftNav/CRC16.hs
@@ -10,10 +10,10 @@
   ( crc16
   ) where
 
-import BasicPrelude hiding ( foldl' )
+import BasicPrelude hiding ( ByteString, foldl' )
 import Data.Array
 import Data.Bits
-import Data.ByteString
+import Data.ByteString.Lazy
 import Data.Word
 
 table :: Array Word16 Word16
diff --git a/src/SwiftNav/SBP.hs b/src/SwiftNav/SBP.hs
--- a/src/SwiftNav/SBP.hs
+++ b/src/SwiftNav/SBP.hs
@@ -14,6 +14,7 @@
 import Data.Binary.Put
 import Data.ByteString
 import Data.ByteString.Lazy hiding (ByteString)
+import Data.ByteString.Builder
 import Data.Word
 import SwiftNav.CRC16
 import SwiftNav.SBP.Acquisition
@@ -56,7 +57,15 @@
     putByteString msgSBPPayload
     putWord16le msgSBPCrc
 
+checkCrc :: Msg -> Word16
+checkCrc Msg {..} =
+  crc16 $ toLazyByteString $
+    word16LE msgSBPType   <>
+    word16LE msgSBPSender <>
+    word8 msgSBPLen       <>
+    byteString msgSBPPayload
 
+
 data SBPMsg =
      SBPMsgAcqResult MsgAcqResult Msg
    | SBPMsgAcqResultDepA MsgAcqResultDepA Msg
@@ -132,7 +141,7 @@
     preamble <- getWord8
     if preamble /= msgSBPPreamble then get else do
       sbp <- get
-      if crc16 (msgSBPPayload sbp) /= msgSBPCrc sbp then get else
+      if checkCrc sbp /= msgSBPCrc sbp then get else
         return $ decode' sbp where
           decode' sbp
             | msgSBPType sbp == msgAcqResult = SBPMsgAcqResult (decode (fromStrict (msgSBPPayload sbp))) sbp
