diff --git a/sbp.cabal b/sbp.cabal
--- a/sbp.cabal
+++ b/sbp.cabal
@@ -1,5 +1,5 @@
 name:                  sbp
-version:               2.3.5
+version:               2.3.6
 synopsis:              SwiftNav's SBP Library
 homepage:              https://github.com/swift-nav/libsbp
 license:               LGPL-3
diff --git a/src/SwiftNav/SBP/Ssr.hs b/src/SwiftNav/SBP/Ssr.hs
--- a/src/SwiftNav/SBP/Ssr.hs
+++ b/src/SwiftNav/SBP/Ssr.hs
@@ -203,7 +203,7 @@
     _msgSsrCodeBiases_sid <- get
     _msgSsrCodeBiases_update_interval <- getWord8
     _msgSsrCodeBiases_iod_ssr <- getWord8
-    _msgSsrCodeBiases_biases <- replicateM 8 get
+    _msgSsrCodeBiases_biases <- whileM (not <$> isEmpty) get
     pure MsgSsrCodeBiases {..}
 
   put MsgSsrCodeBiases {..} = do
@@ -243,7 +243,7 @@
     -- ^ Consistency indicator for Melbourne-Wubbena linear combinations
   , _msgSsrPhaseBiases_yaw           :: !Word16
     -- ^ Satellite yaw angle
-  , _msgSsrPhaseBiases_yaw_rate      :: !Int16
+  , _msgSsrPhaseBiases_yaw_rate      :: !Int8
     -- ^ Satellite yaw angle rate
   , _msgSsrPhaseBiases_biases        :: ![PhaseBiasesContent]
     -- ^ Phase biases corrections for a satellite being tracked.
@@ -258,8 +258,8 @@
     _msgSsrPhaseBiases_dispersive_bias <- getWord8
     _msgSsrPhaseBiases_mw_consistency <- getWord8
     _msgSsrPhaseBiases_yaw <- getWord16le
-    _msgSsrPhaseBiases_yaw_rate <- fromIntegral <$> getWord16le
-    _msgSsrPhaseBiases_biases <- replicateM 8 get
+    _msgSsrPhaseBiases_yaw_rate <- fromIntegral <$> getWord8
+    _msgSsrPhaseBiases_biases <- whileM (not <$> isEmpty) get
     pure MsgSsrPhaseBiases {..}
 
   put MsgSsrPhaseBiases {..} = do
@@ -270,7 +270,7 @@
     putWord8 _msgSsrPhaseBiases_dispersive_bias
     putWord8 _msgSsrPhaseBiases_mw_consistency
     putWord16le _msgSsrPhaseBiases_yaw
-    putWord16le $ fromIntegral _msgSsrPhaseBiases_yaw_rate
+    putWord8 $ fromIntegral _msgSsrPhaseBiases_yaw_rate
     mapM_ put _msgSsrPhaseBiases_biases
 
 $(makeSBP 'msgSsrPhaseBiases ''MsgSsrPhaseBiases)
