Index: /trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- /trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 11114)
+++ /trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 11115)
@@ -855,7 +855,11 @@
 
 // Emit and write the collected corrections of all epochs older than
-// _lastTime (all epochs if all is set, e.g. at the end of a replay)
+// _lastTime (all epochs if all is set, e.g. at the end of a replay).
+// The clock corrections of an epoch are emitted last, so that a consumer
+// (e.g. the combination) has all corrections and biases of the epoch when
+// its clocks arrive; the order in the SSR file is unchanged.
 ////////////////////////////////////////////////////////////////////////////
 void RTCM3coDecoder::dumpEpochs(bool all) {
+  QList<QList<t_clkCorr> > clkToEmit;
   QMutableMapIterator<bncTime, QList<t_orbCorr> > itOrb(_orbCorrections);
   while (itOrb.hasNext()) {
@@ -871,5 +875,5 @@
     itClk.next();
     if (all || itClk.key() < _lastTime) {
-      emit newClkCorrections(itClk.value());
+      clkToEmit << itClk.value();
       t_clkCorr::writeEpoch(_out, itClk.value());
       itClk.remove();
@@ -893,4 +897,7 @@
       itPB.remove();
     }
+  }
+  for (const QList<t_clkCorr>& clkCorr : clkToEmit) {
+    emit newClkCorrections(clkCorr);
   }
   QMutableMapIterator<bncTime, t_vTec> itTec(_vTecMap);
