diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
index e5453dc00e68824e90e2811c8cdc3a17d29808e6..73782e090c7399d0cf9f18ac9a58a72d9b5ff121 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
@@ -247,6 +247,7 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
     const ULong64_t lTime               = fTime + tdaqOffset + imess.tlab;
     const UShort_t lchR                 = chCalib->HasPairingR() ? imess.data : 0;
     const UShort_t lchT                 = chCalib->HasPairingR() ? 0 : imess.data;
+    std::vector<CbmTrdDigi>& digiBuffer = fDigiBuffer[pad];
 
     if (VERBOSE) {
       const Int_t ch = 2 * pad + chCalib->HasPairingR();
@@ -256,15 +257,15 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
              lchT > 0 ? lchT : lchR);
     }
 
-    if (fDigiBuffer[fCrob][pad].size() == 0) {  // init pad position in map and build digi for message
-      fDigiBuffer[fCrob][pad].emplace_back(pad, lchT, lchR, lTime);
-      fDigiBuffer[fCrob][pad].back().SetAddressModule(fMod);
+    if (digiBuffer.size() == 0) {  // init pad position in map and build digi for message
+      digiBuffer.emplace_back(pad, lchT, lchR, lTime);
+      digiBuffer.back().SetAddressModule(fMod);
       continue;
     }
 
     // check if last digi has both R/T message components. Update if not and is within time window
-    auto id = fDigiBuffer[fCrob][pad].rbegin();  // Should always be valid here.
-                                                 // No need to extra check
+    auto id = digiBuffer.rbegin();  // Should always be valid here.
+                                    // No need to extra check
     Double_t r, t;
     Int_t dt;
     const Int_t dtime = (*id).GetTimeDAQ() - lTime;
@@ -285,13 +286,13 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
 
     // build digi for message when update failed
     if (!use) {
-      fDigiBuffer[fCrob][pad].emplace_back(pad, lchT, lchR, lTime);
-      fDigiBuffer[fCrob][pad].back().SetAddressModule(fMod);
-      id = fDigiBuffer[fCrob][pad].rbegin();
+      digiBuffer.emplace_back(pad, lchT, lchR, lTime);
+      digiBuffer.back().SetAddressModule(fMod);
+      id = digiBuffer.rbegin();
     }
 
     // update charge for previously allocated digis to account for FASPRO ADC buffering and read-out feature
-    for (++id; id != fDigiBuffer[fCrob][pad].rend(); ++id) {
+    for (++id; id != digiBuffer.rend(); ++id) {
       r = (*id).GetCharge(t, dt);
       if (lchR && int(r)) {  // update R charge and mark on digi
         (*id).SetCharge(t, lchR, dt);
@@ -312,21 +313,8 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
 
 uint32_t CbmTrdUnpackFaspAlgo::ResetTimeslice()
 {
-  uint32_t uNbLostDigis = 0;
-  /// PAL 03/08/2022: clear internal buffer at latest between two timeslices (TS are self contained!)
-
-  for (auto crobBuffer : fDigiBuffer) {
-    for (auto pad_id(0); pad_id < NFASPMOD * NFASPCH; pad_id++) {
-      if (!crobBuffer.second[pad_id].size()) continue;
-
-      LOG(warn) << fName << "::ResetTimeslice - buffered digi @ CROB=" << crobBuffer.first << " / pad=" << pad_id
-                << " store " << crobBuffer.second[pad_id].size() << " unprocessed digi.";
-      uNbLostDigis += crobBuffer.second[pad_id].size();
-
-      crobBuffer.second[pad_id].clear();
-    }
-  }
-  return uNbLostDigis;
+  /// D.Smith: As of 27.4.2023 nothing to do here as FinalizeComponent() takes care of everything.
+  return 0;
 }
 
 void CbmTrdUnpackFaspAlgo::FinalizeComponent()
@@ -335,9 +323,9 @@ void CbmTrdUnpackFaspAlgo::FinalizeComponent()
   Int_t dt;
   // push finalized digits to the next level
   for (uint16_t ipad(0); ipad < NFASPMOD * NFASPCH; ipad++) {
-    if (!fDigiBuffer[fCrob][ipad].size()) continue;
+    if (!fDigiBuffer[ipad].size()) continue;
     uint nIncomplete(0);
-    for (auto id = fDigiBuffer[fCrob][ipad].begin(); id != fDigiBuffer[fCrob][ipad].end(); id++) {
+    for (auto id = fDigiBuffer[ipad].begin(); id != fDigiBuffer[ipad].end(); id++) {
       r = (*id).GetCharge(t, dt);
       // check if digi has all signals CORRECTED
       if (((t > 0) != (*id).IsFlagged(0)) || ((r > 0) != (*id).IsFlagged(1))) {
@@ -351,7 +339,7 @@ void CbmTrdUnpackFaspAlgo::FinalizeComponent()
       fOutputVec.emplace_back(std::move((*id)));
     }
     // clear digi buffer wrt the digi which was forwarded to higher structures
-    fDigiBuffer[fCrob][ipad].clear();
+    fDigiBuffer[ipad].clear();
     if (nIncomplete > 2) {
       LOG(warn) << fName << "FinalizeComponent(" << fCrob << ") skip " << nIncomplete << " incomplete digi at pad "
                 << ipad << ".\n";
@@ -360,7 +348,8 @@ void CbmTrdUnpackFaspAlgo::FinalizeComponent()
   fCrob = 0xffff;  // reset current crob id
 }
 
-/ ----unpack-- --bool CbmTrdUnpackFaspAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp, UInt_t imslice)
+// ----unpack----
+bool CbmTrdUnpackFaspAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp, UInt_t imslice)
 {
   if (VERBOSE) printf("CbmTrdUnpackFaspAlgo::unpack 0x%04x %d\n", icomp, imslice);
   // LOG(info) << "Component " << icomp << " connected to config CbmTrdUnpackConfig2D. Slice "<<imslice;
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
index 8a90b1dae84c716277668656b1f3dbcfdccbab0b..7c105f0a2b11379c115449e247b883df9fe047f5 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
@@ -204,8 +204,8 @@ private:
   void prt_wd(uint32_t w);
   std::map<uint32_t, uint8_t[NFASPMOD]>* fFaspMap  = nullptr;  ///> FASP mapping update wrt the default setting
   std::map<uint32_t, uint16_t[NCROBMOD]>* fCrobMap = nullptr;  ///> CRI mapping setting
-  std::map<uint16_t, std::array<std::vector<CbmTrdDigi>, NFASPMOD* NFASPCH>> fDigiBuffer = {
-    {{}}};  ///> Buffered digi for each pad in CROB component
+  std::array<std::vector<CbmTrdDigi>, NFASPMOD* NFASPCH> fDigiBuffer = {
+    {}};  ///> Buffered digi for each pad in CROB component
   /** @brief Potential (online) monitor for the unpacking process */
   std::shared_ptr<CbmTrdUnpackFaspMonitor> fMonitor = nullptr;
   uint16_t fCrob                                    = 0xffff;  //! current crob being processed