diff --git a/macro/run/run_unpack_tsa.C b/macro/run/run_unpack_tsa.C
index aa0f262f347da5d07333826df6faefa3ca1c0bd3..5c10bb01b4078d5ace9550df61fdeedd265dcb50 100644
--- a/macro/run/run_unpack_tsa.C
+++ b/macro/run/run_unpack_tsa.C
@@ -83,9 +83,8 @@ void run_unpack_tsa(std::string infile = "test.tsa", UInt_t runid = 0, const cha
 
   // ---- RICH ----
   auto richconfig = std::make_shared<CbmRichUnpackConfig>("", runid);
-  // psdconfig->SetDebugState();
+  // richconfig->SetDebugState();
   richconfig->SetDoWriteOutput();
-  // psdconfig->SetDoWriteOptOutA("CbmPsdDsp");
   std::string parfilesbasepathRich = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data());
   richconfig->SetParFilesBasePath(parfilesbasepathRich);
   // -------------
diff --git a/reco/detectors/rich/unpack/CbmRichUnpackAlgo.cxx b/reco/detectors/rich/unpack/CbmRichUnpackAlgo.cxx
index ff5b18c608b7a7fb6d8e93e24fae12d51ed83d98..83fbf66209bb9e16d8116d5c1c9cb450a26e9654 100644
--- a/reco/detectors/rich/unpack/CbmRichUnpackAlgo.cxx
+++ b/reco/detectors/rich/unpack/CbmRichUnpackAlgo.cxx
@@ -11,6 +11,8 @@
 #include <Rtypes.h>
 #include <RtypesCore.h>
 
+#include <cstdint>
+
 
 CbmRichUnpackAlgo::CbmRichUnpackAlgo() : CbmRecoUnpackAlgo(fgkFlesSubsystemIdTrdR, "CbmRichUnpackAlgo") {}
 
@@ -90,6 +92,9 @@ bool CbmRichUnpackAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp, U
   CbmRichUnpackAlgoMicrosliceReader reader;
   reader.SetData(mv.content(), msDesc.size);
 
+  auto mstime = msDesc.idx;
+  fMsRefTime  = mstime - fTsStartTime;
+
   // There are a lot of MS  with 8 bytes size
   // Does one need these MS?
   if (reader.GetSize() <= 8) return true;
@@ -394,8 +399,8 @@ void CbmRichUnpackAlgo::writeOutputDigi(Int_t fpgaID, Int_t channel, Double_t ti
   Double_t ToTcorr = fbDoToTCorr ? fUnpackPar.GetToTshift(fpgaID, channel) : 0.;
   Int_t pixelUID   = this->getPixelUID(fpgaID, channel);
   //check ordering
-  //   Double_t finalTime = time + (Double_t) msRefTS - fSystemTimeoffset;
-  Double_t finalTime = time - fSystemTimeoffset - fTsStartTime;
+  Double_t finalTime = time + (Double_t) fMsRefTime - fSystemTimeoffset;
+  //   Double_t finalTime = time - fSystemTimeoffset - fTsStartTime;
 
   Double_t lastTime = 0.;
 
diff --git a/reco/detectors/rich/unpack/CbmRichUnpackAlgo.h b/reco/detectors/rich/unpack/CbmRichUnpackAlgo.h
index e87175ca6e0815ff54c969a404e0019efa146ac6..1190677b631f2e540549d8bd0d44c57998cd51e0 100644
--- a/reco/detectors/rich/unpack/CbmRichUnpackAlgo.h
+++ b/reco/detectors/rich/unpack/CbmRichUnpackAlgo.h
@@ -319,6 +319,8 @@ protected:
   double fMbsPrevTimeCh0 = 0.;
   double fMbsPrevTimeCh1 = 0.;
 
+  size_t fMsRefTime = 0;
+
   double fToTMin = -20.;
   double fToTMax = 100.;