diff --git a/gnss-converters.cabal b/gnss-converters.cabal
--- a/gnss-converters.cabal
+++ b/gnss-converters.cabal
@@ -1,5 +1,5 @@
 name:                  gnss-converters
-version:               0.2.5
+version:               0.2.6
 synopsis:              GNSS Converters.
 description:           Haskell bindings for GNSS converters.
 homepage:              http://github.com/swift-nav/gnss-converters
diff --git a/src/Data/RTCM3/SBP.hs b/src/Data/RTCM3/SBP.hs
--- a/src/Data/RTCM3/SBP.hs
+++ b/src/Data/RTCM3/SBP.hs
@@ -183,9 +183,9 @@
 newGpsTime tow = do
   wn <- view storeWn >>= liftIO . readIORef
   return GpsTimeNano
-    { _gpsTimeNano_tow = tow
-    , _gpsTimeNano_ns  = 0
-    , _gpsTimeNano_wn  = wn
+    { _gpsTimeNano_tow         = tow
+    , _gpsTimeNano_ns_residual = 0
+    , _gpsTimeNano_wn          = wn
     }
 
 -- | If incoming TOW is less than stored TOW, rollover WN.
@@ -446,11 +446,9 @@
 toGpsEphemerisCommonContent m = do
   toe <- rtcmTimeToGpsTime (m ^. msg1019_ephemeris ^. gpsEphemeris_wn) (m ^. msg1019_ephemeris ^. gpsEphemeris_toe)
   return EphemerisCommonContent
-    { _ephemerisCommonContent_sid = GnssSignal
-      { _gnssSignal_sat      = fromIntegral $ m ^. msg1019_header ^. ephemerisHeader_sat - 1
-      -- ^ SBP GnssSignal sat ID is off-by-one; GnssSignal16 is not.
-      , _gnssSignal_code     = 0 -- there is an L2P status flag in msg 1019, but I don't think that applies
-      , _gnssSignal_reserved = 0
+    { _ephemerisCommonContent_sid = GnssSignal16
+      { _gnssSignal16_sat  = m ^. msg1019_header ^. ephemerisHeader_sat
+      , _gnssSignal16_code = 0 -- there is an L2P status flag in msg 1019, but I don't think that applies
       }
     , _ephemerisCommonContent_toe          = toe
     , _ephemerisCommonContent_ura          = gpsUriToUra (fromIntegral $ m ^. msg1019_ephemeris ^. gpsEphemeris_svHealth)
