diff --git a/algo/detectors/bmon/Unpack.cxx b/algo/detectors/bmon/Unpack.cxx
index dee3b83b2d419747afe5b7074dcd6a83fc5eab86..6ccc4cc0c03554ffaab98e4d4836080fba3d6215 100644
--- a/algo/detectors/bmon/Unpack.cxx
+++ b/algo/detectors/bmon/Unpack.cxx
@@ -24,11 +24,6 @@ namespace cbm::algo::bmon
 
     // --- Output data
     resultType result = {};
-    TimeSpec time;
-
-    // --- Current Timeslice start time in epoch units. Note that it is always a multiple of epochs
-    // --- and the epoch is a multiple of ns.
-    time.currentTsTime = static_cast<uint64_t>(tTimeslice / critof001::kuEpochInNs) % critof001::kulEpochCycleEp;
 
     // --- Number of messages in microslice
     auto msSize = msDescr.size;
@@ -63,6 +58,13 @@ namespace cbm::algo::bmon
       }
     }
 
+    TimeSpec time;
+
+    // --- Current Timeslice start time in epoch units. Note that it is always a multiple of epochs
+    // --- and the epoch is a multiple of ns.
+    time.currentTsTime = static_cast<uint64_t>(tTimeslice / critof001::kuEpochInNs) % critof001::kulEpochCycleEp;
+    ProcessEpochMessage(message[0], time);
+
     // --- The last message in the MS is expected to be EndOfMs.
     if (!message[numMessages - 1].isEndOfMs()) {
       result.second.fNumErrInvalidLastMessage++;
@@ -71,7 +73,7 @@ namespace cbm::algo::bmon
     //Check if last message is "EndOfMs"!! Maybe loop to messageNr < numMessages - 1
 
     // --- Message loop
-    for (uint32_t messageNr = 0; messageNr < numMessages; messageNr++) {
+    for (uint32_t messageNr = 1; messageNr < numMessages; messageNr++) {
 
       // --- Action depending on message type
       switch (message[messageNr].getMessageType()) {