diff --git a/algo/detectors/bmon/ReadoutConfig.cxx b/algo/detectors/bmon/ReadoutConfig.cxx
index 6e6e97f1415adf67caa0b3685d5b8045a5f42464..ab27178e1720a4ca24888e7e088b89d95cd0a48e 100644
--- a/algo/detectors/bmon/ReadoutConfig.cxx
+++ b/algo/detectors/bmon/ReadoutConfig.cxx
@@ -79,6 +79,8 @@ namespace cbm::algo::bmon
 
   void ReadoutConfig::Init(const ReadoutSetup& pars)
   {
+    fTimeOffset = pars.timeOffset;
+
     // Constructing the map (equipmentId, eLink, channel) -> (TOF address)
     const uint32_t numChanPerComp = pars.NChansPerComponent();
 
diff --git a/algo/detectors/bmon/ReadoutConfig.h b/algo/detectors/bmon/ReadoutConfig.h
index 13133d6b3b6f11083a61246713ab27996e540828..a16d72aa61c600b394e89efabbe70665150efdcb 100644
--- a/algo/detectors/bmon/ReadoutConfig.h
+++ b/algo/detectors/bmon/ReadoutConfig.h
@@ -16,6 +16,10 @@
 namespace cbm::algo::bmon
 {
 
+  /**
+   * @brief Readout setup / Hardware cabling for BMon
+   * Used to create the hardware mapping for the BMon unpacker.
+   */
   struct ReadoutSetup {
 
     struct CROB {
@@ -30,9 +34,10 @@ namespace cbm::algo::bmon
         yaml::Property(&CROB::rpcType, "rpcType", "add explanation."),
         yaml::Property(&CROB::rpcSide, "rpcSide", "add explanation."),
         yaml::Property(&CROB::nRPC, "nRPC", "number of RPCs."),
-	yaml::Property(&CROB::timeOffset, "timeOffset", "time offset for CROB"));
+        yaml::Property(&CROB::timeOffset, "timeOffset", "time offset for CROB"));
     };
 
+    i32 timeOffset;
     i32 nFebsPerComponent;
     i32 nAsicsPerFeb;
     i32 nChannelsPerAsic;
@@ -40,7 +45,8 @@ namespace cbm::algo::bmon
     std::vector<CROB> crobs;
     std::vector<u16> eqIds;
 
-    CBM_YAML_PROPERTIES(yaml::Property(&ReadoutSetup::nFebsPerComponent, "nFebsPerComponent", "Number of FEBs per component"),
+    CBM_YAML_PROPERTIES(yaml::Property(&ReadoutSetup::timeOffset, "timeOffset", "Time offset for BMon"),
+                        yaml::Property(&ReadoutSetup::nFebsPerComponent, "nFebsPerComponent", "Number of FEBs per component"),
                         yaml::Property(&ReadoutSetup::nAsicsPerFeb, "nAsicsPerFeb", "Number of ASICs per FEB"),
                         yaml::Property(&ReadoutSetup::nChannelsPerAsic, "nChannelsPerAsic", "Number of channels per ASIC"),
                         yaml::Property(&ReadoutSetup::nCrobPerComponent, "nCrobPerComponent", "Number of CROBs per component"),
@@ -70,6 +76,11 @@ namespace cbm::algo::bmon
     /** @brief Destructor **/
     virtual ~ReadoutConfig();
 
+    /** @brief System time offset for BMon
+     ** @return Value of system time offset
+     **/
+    i32 TimeOffset() const { return fTimeOffset; }
+
     /** @brief Equipment in the configuration
      ** @return Vector of equipment IDs
      **/
@@ -96,6 +107,9 @@ namespace cbm::algo::bmon
     int32_t TimeOffsetMap(uint16_t equipId, uint16_t elink);
 
    private:
+    // --- BMon system time offset
+    int32_t fTimeOffset = 0;
+
     // --- Bmon elink time offsets
     // --- Map index: (equipment, elink), map value: (time offset)
     std::map<uint16_t, std::vector<int32_t>> fTimeOffsetMap = {};
diff --git a/algo/detectors/bmon/Unpack.cxx b/algo/detectors/bmon/Unpack.cxx
index 36dbc050e181bde29ac6142366641774cc6ccb7b..60935649c8fc70f0c9d3ba90761a8d6765e41970 100644
--- a/algo/detectors/bmon/Unpack.cxx
+++ b/algo/detectors/bmon/Unpack.cxx
@@ -12,6 +12,7 @@ using fles::Subsystem;
 Unpack::Unpack(const ReadoutConfig& readout) : fReadout(readout)
 {
   constexpr u8 SystemVersion = 0x00;
+  i32 SysTimeOffset          = fReadout.TimeOffset();
 
   // Create one algorithm per component for Bmon and configure it with parameters
   auto equipIdsBmon = fReadout.GetEquipmentIds();
@@ -21,7 +22,7 @@ Unpack::Unpack(const ReadoutConfig& readout) : fReadout(readout)
     for (size_t elink = 0; elink < numElinks; elink++) {
       bmon::UnpackElinkPar elinkPar;
       elinkPar.fChannelUId = fReadout.Map(equip, elink);            // Vector of Bmon addresses for this elink
-      elinkPar.fTimeOffset = fReadout.TimeOffsetMap(equip, elink);  // Time offset for this elink
+      elinkPar.fTimeOffset = SysTimeOffset + fReadout.TimeOffsetMap(equip, elink);  // Time offset for this elink
       par.fElinkParams.push_back(elinkPar);
     }
     auto algo                      = std::make_unique<UnpackMS>(par);