Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 11010)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 11011)
@@ -207,5 +207,5 @@
       memcpy(&_phaseBias,  &phaseBiasSav, sizeof(phaseBiasSav));
       memcpy(&_vTEC,       &vTECSav,      sizeof(vTECSav));
-      memcpy(&metaDataSav, &_metaData,    sizeof(metaDataSav));
+      memcpy(&_metaData,   &metaDataSav,  sizeof(metaDataSav));
       break;
     }
@@ -976,5 +976,6 @@
       epoSecGlo = epoSecGlo + gnumleap(date.year(), date.month(), date.day());
     }
-    if (_type == RTCMssr) {
+    if (_type == RTCMssr || _type == RTCMnewssr) {
+      // Same GLONASS epoch wire convention (UTC+3h) as RTCMssr
       epoSecGlo = epoSecGlo - 3 * 3600 + gnumleap(date.year(), date.month(), date.day());
     }
@@ -997,4 +998,11 @@
     _lastTime.set(currentWeek, epoSecBds);
   }
+  // Some message types (e.g. Metadata) carry no epoch field of their own,
+  // and none of the above found anything fresh to use either - fall back
+  // to the last known valid time rather than leaving _lastTime invalid
+  // (which would silently drop the message's output entirely).
+  else if (prevTime.valid()) {
+    _lastTime = prevTime;
+  }
 
   if (_lastTime.valid()) {
