diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx
index a6daab289c6e953141fec03d900a05fa1b3fb76a..d4e58133fb058c91ceebf84155f2886220b21dff 100644
--- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx
+++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.cxx
@@ -103,6 +103,10 @@ Bool_t CbmMcbm2018UnpackerAlgoRich::ProcessTs(const fles::Timeslice& /*ts*/)
 
 Bool_t CbmMcbm2018UnpackerAlgoRich::ProcessTs(const fles::Timeslice& ts, size_t component)
 {
+
+  // Get reference TS time
+  fdTsStartTime = ts.start_time();
+
   /// Ignore First TS as first MS is typically corrupt
   if (0 == ts.index()) { return kTRUE; }
 
@@ -508,14 +512,26 @@ void CbmMcbm2018UnpackerAlgoRich::WriteOutputDigi(Int_t fpgaID, Int_t channel, D
   Double_t ToTcorr = fbDoToTCorr ? fUnpackPar->GetToTshift(fpgaID, channel) : 0.;
   Int_t pixelUID   = this->GetPixelUID(fpgaID, channel);
   //check ordering
-  Double_t finalTime = time + (Double_t) MSidx - fdTimeOffsetNs;
+  uint64_t msRefTS = 0;
+  if (MSidx >= fdTsStartTime) {
+    msRefTS  = MSidx - fdTsStartTime;
+  } else {
+    std::cout<<"MS before TS Start: "<<MSidx<<"  "<<fdTsStartTime<<std::endl;
+  }
+
+  Double_t finalTime = time + (Double_t) msRefTS - fdTimeOffsetNs;
+  // Double_t finalTime = time + (Double_t) MSidx - fdTimeOffsetNs;
+  
+  if (msRefTS == 0) return;  // Problems in data in current version. time is too large
 
   Double_t lastTime = 0.;
 
   if (fDigiVect.size() < 1) { fDigiVect.emplace_back(pixelUID, finalTime, tot - ToTcorr); }
   else {
     lastTime = fDigiVect[fDigiVect.size() - 1].GetTime();
-    if (lastTime > finalTime) {
+    if (fDigiVect[0].GetTime() > finalTime) {
+      fDigiVect.emplace(fDigiVect.begin(), pixelUID, finalTime, tot - ToTcorr);
+    } else if (lastTime > finalTime) {
       for (int i = fDigiVect.size() - 1; i >= 0; i--) {
         lastTime = fDigiVect[i].GetTime();
         if (lastTime <= finalTime) {
diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h
index b449b1b391a95abfe612b4b222b65bd2109e11d0..201091c1a8f2c03372012cc46c909dc595c1b2c0 100644
--- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h
+++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerAlgoRich.h
@@ -348,6 +348,8 @@ public:  // histograms
   std::map<uint32_t, std::map<Int_t, TH1D*>> fhTotMap;
   std::map<uint32_t, TH2D*> fhTot2dMap;
 
+  uint64_t fdTsStartTime = 0;
+
   ClassDef(CbmMcbm2018UnpackerAlgoRich, 1);
 };