diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
index c299bcfab4587a0b886ad942cf820feab6c5ab85..a36cc09809adf9e88293e07f2dc182c6d2f546d1 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
@@ -51,7 +51,6 @@ CbmTrdUnpackFaspAlgo::~CbmTrdUnpackFaspAlgo() {}
 //_________________________________________________________________________________
 Bool_t CbmTrdUnpackFaspAlgo::initParSet(FairParGenericSet* parset)
 {
-  FairParamList parList;
   Int_t nModules(0);
   if (strcmp(parset->ClassName(), "CbmTrdParSetAsic") == 0) {
     CbmTrdParSetAsic* setPar = static_cast<CbmTrdParSetAsic*>(parset);
@@ -229,20 +228,20 @@ void CbmTrdUnpackFaspAlgo::mess_prt(CbmTrdFaspMessage* mess)
 }
 
 //_________________________________________________________________________________
-bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFaspMessage> messes)
+bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFaspMessage> messes, const uint16_t mod_id)
 {
   const UChar_t lFasp             = messes[0].fasp;
-  const CbmTrdParFasp* faspPar    = (CbmTrdParFasp*) fAsicPar.GetAsicPar(fMod * 1000 + lFasp);
-  const CbmTrdParModDigi* digiPar = (CbmTrdParModDigi*) fDigiSet->GetModulePar(fMod);
+  const CbmTrdParFasp* faspPar    = (CbmTrdParFasp*) fAsicPar.GetAsicPar(mod_id * 1000 + lFasp);
+  const CbmTrdParModDigi* digiPar = (CbmTrdParModDigi*) fDigiSet->GetModulePar(mod_id);
 
   // link data to the position on the padplane
   if (!faspPar) {
-    LOG(error) << GetName() << "::pushDigis - Par for FASP " << (int) lFasp << " in module " << fMod
+    LOG(error) << GetName() << "::pushDigis - Par for FASP " << (int) lFasp << " in module " << mod_id
                << " missing. Skip.";
     return false;
   }
   if (!digiPar) {
-    LOG(error) << GetName() << "::pushDigis - DIGI par for module " << fMod << " missing. Skip.";
+    LOG(error) << GetName() << "::pushDigis - DIGI par for module " << mod_id << " missing. Skip.";
     return false;
   }
 
@@ -271,7 +270,7 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
 
     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);
+      digiBuffer.back().SetAddressModule(mod_id);
       continue;
     }
 
@@ -299,7 +298,7 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
     // build digi for message when update failed
     if (!use) {
       digiBuffer.emplace_back(pad, lchT, lchR, lTime);
-      digiBuffer.back().SetAddressModule(fMod);
+      digiBuffer.back().SetAddressModule(mod_id);
       id = digiBuffer.rbegin();
     }
 
@@ -396,12 +395,9 @@ bool CbmTrdUnpackFaspAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp
     LOG(error) << GetName() << "::unpack - CROB eq_id=" << eq_id << " not registered in the unpacker.";
     return false;
   }
-  fMod                  = (*fCompMap)[eq_id].first;
+  const uint16_t mod_id = (*fCompMap)[eq_id].first;
   const uint8_t crob_id = (*fCompMap)[eq_id].second;
 
-
-  ///////// To do: Make fMod a local variable
-
   if (fCrob == 0xffff) fCrob = icomp;
 
   // Get the µslice size in bytes to calculate the number of completed words
@@ -441,7 +437,7 @@ bool CbmTrdUnpackFaspAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp
     if (isaux) {
       if (!ch_id) {
         // clear buffer
-        if (vMess.size()) { pushDigis(vMess); }
+        if (vMess.size()) { pushDigis(vMess, mod_id); }
         vMess.clear();
 
         if (VERBOSE)
@@ -454,30 +450,30 @@ bool CbmTrdUnpackFaspAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp
       else if (ch_id == 1) {
         if (VERBOSE) cout << boost::format("    PAUSE: fasp_id=%02d\n") % static_cast<unsigned int>(fasp_id);
       }
+      continue;
     }
-    else {
-      if (fFaspMap) fasp_id = ((*fFaspMap)[fMod])[fasp_id];
 
-      if (lFaspOld != fasp_id) {
-        // push
-        if (vMess.size()) { pushDigis(vMess); }
-        vMess.clear();
-        lFaspOld = fasp_id;
-      }
-      if (data & 0x1) {
-        LOG(warn) << GetName() << "::unpack - Data corrupted : detect end bit set.";
-        continue;
-      }
-      if (VERBOSE)
-        cout << boost::format("    DD : fasp_id=%02d ch_id=%02d slice=%03d data=%4d\n")
-                  % static_cast<unsigned int>(fasp_id) % static_cast<unsigned int>(ch_id)
-                  % static_cast<unsigned int>(slice) % static_cast<unsigned int>(data >> 1);
-      if (data & 0x2000) {
-        LOG(debug) << GetName() << "::unpack - Self-triggered data.";
-        data &= 0x1fff;
-      }
-      vMess.emplace_back(ch_id, kData, slice, data >> 1, crob_id, lFaspOld);
+    if (fFaspMap) fasp_id = ((*fFaspMap)[mod_id])[fasp_id];
+
+    if (lFaspOld != fasp_id) {
+      // push
+      if (vMess.size()) { pushDigis(vMess, mod_id); }
+      vMess.clear();
+      lFaspOld = fasp_id;
+    }
+    if (data & 0x1) {
+      LOG(warn) << GetName() << "::unpack - Data corrupted : detect end bit set.";
+      continue;
+    }
+    if (VERBOSE)
+      cout << boost::format("    DD : fasp_id=%02d ch_id=%02d slice=%03d data=%4d\n")
+                % static_cast<unsigned int>(fasp_id) % static_cast<unsigned int>(ch_id)
+                % static_cast<unsigned int>(slice) % static_cast<unsigned int>(data >> 1);
+    if (data & 0x2000) {
+      LOG(debug) << GetName() << "::unpack - Self-triggered data.";
+      data &= 0x1fff;
     }
+    vMess.emplace_back(ch_id, kData, slice, data >> 1, crob_id, lFaspOld);
     //prt_wd(*wd);
   }
   return unpackOk;
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
index bbd864af5dda4db06d10371ef40d5332b8f284f6..7ace5f14057be0429ca8e6f1a275c0fb199e7079 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
@@ -134,7 +134,7 @@ protected:
   void mess_readEW(uint32_t wd, CbmTrdFaspMessage* mess);
   /** @brief Print FASP message */
   void mess_prt(CbmTrdFaspMessage* mess);
-  bool pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFaspMessage> messages);
+  bool pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFaspMessage> messages, const uint16_t mod_id);
   /** @brief Time offset for digi wrt the TS start, expressed in 80 MHz clks. It contains:
    *  - relative offset of the MS wrt the TS
    *  - FASP epoch offset for current CROB
@@ -209,7 +209,6 @@ private:
   /** @brief Potential (online) monitor for the unpacking process */
   std::shared_ptr<CbmTrdUnpackFaspMonitor> fMonitor = nullptr;
   uint16_t fCrob                                    = 0xffff;  //! current crob being processed
-  uint16_t fMod                                     = 0xffff;  //! current module being processed
   std::vector<uint16_t> fModuleId = {};  ///> list of modules for which there is are calibration parameters
   CbmTrdParSetAsic fAsicPar;
   CbmTrdParSetDigi* fDigiSet = nullptr;