Index: /trunk/BNC/src/bnchelp.html
===================================================================
--- /trunk/BNC/src/bnchelp.html	(revision 11112)
+++ /trunk/BNC/src/bnchelp.html	(revision 11113)
@@ -8524,6 +8524,7 @@
   <p>
     As the incoming corrections of the individual providers arrive with different latencies, BNC combines an epoch as
-    soon as each provider has delivered corrections for a later epoch, i.e. has completed the epoch. The combined
-    product is thus only delayed by the latency of the slowest provider. If a provider is late or missing, the epoch is
+    soon as each provider has delivered it. The corrections of a provider's epoch are passed on as soon as all its
+    messages have arrived (Multiple Message Indicator), with the clock corrections after the orbit corrections and
+    biases. The combined product is thus only delayed by the latency of the slowest provider. If a provider is late or missing, the epoch is
     combined without it at the latest when the newest incoming corrections are 10 seconds (or the sampling interval,
     if larger) younger than the epoch. Corrections arriving after an epoch was combined are ignored.</p>
Index: /trunk/BNC/src/combination/bnccomb.cpp
===================================================================
--- /trunk/BNC/src/combination/bnccomb.cpp	(revision 11112)
+++ /trunk/BNC/src/combination/bnccomb.cpp	(revision 11113)
@@ -555,12 +555,14 @@
 
 
-// True if every AC has delivered clock corrections for an epoch after epoTime
-////////////////////////////////////////////////////////////////////////////
-bool bncComb::allACsBeyond(const bncTime& epoTime) const {
+// True if every AC has delivered clock corrections for epoTime or a later
+// epoch: the decoder passes an epoch on when it is complete (Multiple
+// Message Indicator) and emits its clocks after its orbits and biases
+////////////////////////////////////////////////////////////////////////////
+bool bncComb::allACsDelivered(const bncTime& epoTime) const {
   QListIterator<cmbAC*> itAC(_ACs);
   while (itAC.hasNext()) {
     const cmbAC* AC = itAC.next();
     bncTime acLast = _acLastClkTime.value(AC->name);
-    if (!acLast.valid() || !(acLast > epoTime)) {
+    if (!acLast.valid() || acLast < epoTime) {
       return false;
     }
@@ -723,12 +725,12 @@
       }
     }
-    // Process the front epoch as soon as all ACs have delivered corrections
-    // for a later epoch (i.e. have finished this one), at the latest when
-    // the newest correction is maxWait newer (an AC may be late or missing).
+    // Process the front epoch as soon as all ACs have delivered it (complete
+    // epochs), at the latest when the newest correction is maxWait newer
+    // (an AC may be late or missing).
     // Waiting only outWait after the newest correction lost the corrections
     // of ACs with a few seconds more latency ("old correction").
     // -----------------------------------------------------------------------
     const double maxWait = max(10.0, outWait);
-    if (allACsBeyond(epoTime) || epoTime < (_lastClkCorrTime - maxWait)) {
+    if (allACsDelivered(epoTime) || epoTime < (_lastClkCorrTime - maxWait)) {
       _resTime = epoTime;
       processEpoch(_resTime, clkCorrVec);
Index: /trunk/BNC/src/combination/bnccomb.h
===================================================================
--- /trunk/BNC/src/combination/bnccomb.h	(revision 11112)
+++ /trunk/BNC/src/combination/bnccomb.h	(revision 11113)
@@ -277,5 +277,5 @@
   QMap<char, bncTime>                       _outlierStatStart; // start of the statistics interval
   void resetSatOffsets(char sys);
-  bool allACsBeyond(const bncTime& epoTime) const;
+  bool allACsDelivered(const bncTime& epoTime) const;
   bncTime                                    _resTime;
   cmbCorr*                                   _newCorr;
