diff --git a/core/detectors/sts/CbmStsParAsic.h b/core/detectors/sts/CbmStsParAsic.h
index af6f65191e993f8dfa0b889bedf2491b82a0dc7a..2dcfc568624ca59364dac0c59e3521ba19b2a86c 100644
--- a/core/detectors/sts/CbmStsParAsic.h
+++ b/core/detectors/sts/CbmStsParAsic.h
@@ -190,6 +190,16 @@ public:
    **/
   void SetWalkCoef(std::array<double, 4> par) { fWalkCoef = par; }
 
+  /** @brief Get one of the coefficients for walk correction
+   ** @param uIdx Index of the correction parameter
+   ** @return Double value of coeff
+   **/
+  double GetWalkCoef(uint32_t uIdx) const
+  {
+    if (uIdx < 4) return fWalkCoef[uIdx];
+    return 0.;
+  }
+
   /** @brief Info to string **/
   std::string ToString() const;
 
diff --git a/macro/beamtime/mcbm2021/mStsAsicTimeWalk.par b/macro/beamtime/mcbm2021/mStsAsicTimeWalk.par
new file mode 100644
index 0000000000000000000000000000000000000000..6117b10f01e914f8247bafb83d068454cc25c39c
--- /dev/null
+++ b/macro/beamtime/mcbm2021/mStsAsicTimeWalk.par
@@ -0,0 +1,94 @@
+0x10008002	0	-24.343851	2.794827	-0.103235	0.001478
+0x10008002	1	-24.453138	2.485316	-0.084344	0.001143
+0x10008002	2	-21.335244	2.585311	-0.094605	0.001301
+0x10008002	3	-27.042286	3.172233	-0.124657	0.001763
+0x10008002	4	-25.045089	3.203871	-0.127637	0.001794
+0x10008002	5	-26.779818	3.087139	-0.119053	0.001645
+0x10008002	6	-24.481546	3.110816	-0.121333	0.001657
+0x10008002	7	-22.591301	2.877937	-0.113311	0.001577
+0x10008002	8	-19.424627	2.142350	-0.076907	0.001131
+0x10008002	9	-18.569512	2.213657	-0.077985	0.001104
+0x10008002	10	-16.501049	2.082342	-0.076398	0.001047
+0x10008002	11	-19.052489	2.548761	-0.098873	0.001388
+0x10008002	12	-21.833524	2.704140	-0.105664	0.001495
+0x10008002	13	-17.299280	2.451026	-0.100094	0.001467
+0x10008002	14	-19.148061	2.444700	-0.094107	0.001301
+0x10008002	15	-27.609664	2.979764	-0.118827	0.001815
+0x10008402	0	-16.073344	2.122262	-0.077667	0.001089
+0x10008402	1	-14.128047	1.925380	-0.068603	0.000927
+0x10008402	2	-14.816346	2.138562	-0.086058	0.001264
+0x10008402	3	-15.495564	2.221024	-0.090255	0.001300
+0x10008402	4	-14.726348	2.047140	-0.081099	0.001143
+0x10008402	5	-14.639612	2.115243	-0.088436	0.001292
+0x10008402	6	-15.862068	2.403059	-0.105667	0.001625
+0x10008402	7	-10.630106	1.633339	-0.067333	0.001027
+0x10008402	8	-18.162918	1.839778	-0.062554	0.000903
+0x10008402	9	-14.766435	1.629818	-0.054458	0.000773
+0x10008402	10	-13.242281	1.478376	-0.050540	0.000684
+0x10008402	11	-13.184870	1.835602	-0.069212	0.000971
+0x10008402	13	-15.820881	2.125931	-0.085089	0.001243
+0x10008402	14	-17.079033	2.253279	-0.095055	0.001457
+0x10008402	15	-21.763771	2.444369	-0.097365	0.001488
+0x10008412	0	-21.062298	2.403890	-0.102558	0.001589
+0x10008412	1	-24.543860	2.389462	-0.096190	0.001471
+0x10008412	2	-20.704607	1.996227	-0.075500	0.001141
+0x10008412	3	-22.341229	2.170088	-0.084561	0.001281
+0x10008412	4	-22.427438	2.116928	-0.079242	0.001178
+0x10008412	5	-23.909809	2.120500	-0.077669	0.001144
+0x10008412	6	-23.474690	2.298446	-0.091476	0.001419
+0x10008412	7	-21.015222	2.099456	-0.081011	0.001165
+0x10008412	8	-17.923666	2.086692	-0.082284	0.001242
+0x10008412	9	-14.506690	1.860290	-0.069751	0.001043
+0x10008412	10	-15.961562	1.900934	-0.073619	0.001135
+0x10008412	11	-15.770385	1.936563	-0.073541	0.001112
+0x10008412	12	-16.316668	1.803342	-0.066135	0.000997
+0x10008412	13	-14.351899	1.640790	-0.057478	0.000828
+0x10008412	14	-15.640816	1.622711	-0.052814	0.000721
+0x10008412	15	-29.251989	3.538843	-0.151628	0.002310
+0x10018002	0	-25.056458	3.219929	-0.125826	0.001851
+0x10018002	1	-24.371339	2.918229	-0.110544	0.001599
+0x10018002	2	-23.462901	3.175956	-0.124907	0.001805
+0x10018002	3	-24.111189	3.086661	-0.123224	0.001715
+0x10018002	4	-29.824286	3.758626	-0.156249	0.002269
+0x10018002	6	-27.337549	3.448515	-0.136996	0.001904
+0x10018002	7	-28.369105	3.765852	-0.157456	0.002274
+0x10018002	8	-20.791849	2.486259	-0.089749	0.001276
+0x10018002	9	-17.363288	2.371768	-0.088625	0.001300
+0x10018002	10	-18.272911	2.389323	-0.090529	0.001260
+0x10018002	11	-17.764736	2.624238	-0.105000	0.001490
+0x10018002	12	-19.324053	2.746429	-0.113868	0.001655
+0x10018002	13	-19.358567	2.818979	-0.117600	0.001718
+0x10018002	14	-23.161820	2.978407	-0.117120	0.001645
+0x10018002	15	-27.423694	3.107933	-0.123165	0.001840
+0x10018402	0	-16.145571	2.285077	-0.084840	0.001184
+0x10018402	1	-16.710720	2.333578	-0.088014	0.001256
+0x10018402	2	-13.307549	2.055841	-0.082222	0.001205
+0x10018402	3	-18.324998	2.492320	-0.106166	0.001586
+0x10018402	4	-12.216834	2.021692	-0.085865	0.001282
+0x10018402	5	-16.246236	2.224143	-0.094434	0.001413
+0x10018402	6	-16.092803	2.422394	-0.103351	0.001556
+0x10018402	7	-14.283653	2.054059	-0.089415	0.001367
+0x10018402	8	-16.091609	1.761754	-0.058745	0.000843
+0x10018402	9	-15.368578	1.813220	-0.061890	0.000874
+0x10018402	10	-15.429614	1.815415	-0.064702	0.000879
+0x10018402	11	-14.695207	2.035016	-0.076519	0.001062
+0x10018402	12	-14.439320	1.914747	-0.075799	0.001113
+0x10018402	13	-13.936573	1.896988	-0.071429	0.001002
+0x10018402	14	-16.212322	2.087315	-0.082074	0.001192
+0x10018402	15	-19.711627	2.072715	-0.076144	0.001141
+0x10018412	0	-14.367412	1.870214	-0.068419	0.000953
+0x10018412	1	-15.059765	1.700618	-0.056864	0.000772
+0x10018412	2	-14.580617	1.835231	-0.065276	0.000935
+0x10018412	3	-17.815214	2.049838	-0.076863	0.001137
+0x10018412	4	-15.237744	1.915726	-0.069146	0.001000
+0x10018412	5	-16.830010	1.644316	-0.054014	0.000760
+0x10018412	6	-18.143719	2.165342	-0.081457	0.001200
+0x10018412	7	-13.713480	1.750551	-0.067606	0.000995
+0x10018412	8	-15.973608	1.941389	-0.070457	0.001006
+0x10018412	9	-14.568116	1.794739	-0.061400	0.000856
+0x10018412	10	-17.442979	1.840064	-0.062072	0.000876
+0x10018412	11	-17.495727	2.166743	-0.083457	0.001253
+0x10018412	12	-15.841103	1.836733	-0.065771	0.000969
+0x10018412	13	-18.192644	2.166289	-0.082612	0.001239
+0x10018412	14	-21.460571	2.277799	-0.084761	0.001226
+0x10018412	15	-25.006354	2.532571	-0.098309	0.001455
diff --git a/macro/run/run_unpack_tsa.C b/macro/run/run_unpack_tsa.C
index 0b3580be025a27932f23b6cbdcb7d3f164db06b1..f02406cb3042423c2f0e9dc61dd2665d9f157b56 100644
--- a/macro/run/run_unpack_tsa.C
+++ b/macro/run/run_unpack_tsa.C
@@ -137,121 +137,47 @@ void run_unpack_tsa(std::vector<std::string> infile = {"test.tsa"}, UInt_t runid
     stsconfig->SetMinAdcCut(3, 1);
     stsconfig->SetMinAdcCut(4, 1);
 
-    stsconfig->MaskNoisyChannel(7, 715);
-    stsconfig->MaskNoisyChannel(7, 162);
-    stsconfig->MaskNoisyChannel(7, 159);
-    stsconfig->MaskNoisyChannel(7, 158);
-    stsconfig->MaskNoisyChannel(7, 125);
-    stsconfig->MaskNoisyChannel(7, 124);
-    stsconfig->MaskNoisyChannel(7, 123);
-    stsconfig->MaskNoisyChannel(12, 119);
-    stsconfig->MaskNoisyChannel(3, 85);
-    stsconfig->MaskNoisyChannel(3, 79);
-    stsconfig->MaskNoisyChannel(3, 75);
     stsconfig->MaskNoisyChannel(3, 56);
+    stsconfig->MaskNoisyChannel(3, 75);
+    stsconfig->MaskNoisyChannel(3, 79);
+    stsconfig->MaskNoisyChannel(3, 85);
+    stsconfig->MaskNoisyChannel(7, 123);
+    stsconfig->MaskNoisyChannel(7, 124);
+    stsconfig->MaskNoisyChannel(7, 125);
+    stsconfig->MaskNoisyChannel(7, 158);
+    stsconfig->MaskNoisyChannel(7, 159);
+    stsconfig->MaskNoisyChannel(7, 162);
+    stsconfig->MaskNoisyChannel(7, 715);
     stsconfig->MaskNoisyChannel(9, 709);
+    stsconfig->MaskNoisyChannel(12, 119);
+
+    // Time Walk correction
+    std::map<uint32_t, CbmStsParModule> walkMap;
+    auto parAsic = new CbmStsParAsic(128, 31, 31., 1., 5., 800., 1000., 3.9789e-3);
+
+    // Module params: number of channels, number of channels per ASIC
+    auto parMod = new CbmStsParModule(2048, 128);
+
+    // default
+    double p0 = 0, p1 = 0, p2 = 0, p3 = 0;
+    parAsic->SetWalkCoef({p0, p1, p2, p3});
+    parMod->SetAllAsics(*parAsic);
 
-    // Time OffSet
-    // U2 MOD1
-    stsconfig->SetAsicTimeOffset(104, 0.235097);
-    stsconfig->SetAsicTimeOffset(105, -0.919854);
-    stsconfig->SetAsicTimeOffset(106, 0.470871);
-    stsconfig->SetAsicTimeOffset(107, -0.302136);
-    stsconfig->SetAsicTimeOffset(108, 0.0538701);
-    stsconfig->SetAsicTimeOffset(109, -0.726945);
-    stsconfig->SetAsicTimeOffset(110, -0.474958);
-    stsconfig->SetAsicTimeOffset(111, -0.426105);
-    stsconfig->SetAsicTimeOffset(112, -0.642128);
-    stsconfig->SetAsicTimeOffset(113, 3.90217);
-    stsconfig->SetAsicTimeOffset(114, 4.50206);
-    stsconfig->SetAsicTimeOffset(115, 4.16447);
-    stsconfig->SetAsicTimeOffset(116, 5.00525);
-    stsconfig->SetAsicTimeOffset(117, 4.2554);
-    stsconfig->SetAsicTimeOffset(118, 5.51313);
-    stsconfig->SetAsicTimeOffset(119, 3.38058);
-    // U2 MOD0
-    stsconfig->SetAsicTimeOffset(88, 5.32785);
-    stsconfig->SetAsicTimeOffset(89, 5.10337);
-    stsconfig->SetAsicTimeOffset(90, 6.63223);
-    stsconfig->SetAsicTimeOffset(91, 4.44318);
-    stsconfig->SetAsicTimeOffset(92, 6.5406);
-    stsconfig->SetAsicTimeOffset(93, 3.82063);
-    stsconfig->SetAsicTimeOffset(94, 5.8673);
-    stsconfig->SetAsicTimeOffset(95, 4.41679);
-    stsconfig->SetAsicTimeOffset(96, 0.917994);
-    stsconfig->SetAsicTimeOffset(97, 2.7819);
-    stsconfig->SetAsicTimeOffset(98, 5.61836);
-    stsconfig->SetAsicTimeOffset(99, 5.9533);
-    stsconfig->SetAsicTimeOffset(100, 5.9789);
-    stsconfig->SetAsicTimeOffset(101, 5.24167);
-    stsconfig->SetAsicTimeOffset(102, 7.14848);
-    stsconfig->SetAsicTimeOffset(103, 6.12267);
-    // U1 MOD1
-    stsconfig->SetAsicTimeOffset(64, 6.94614);
-    stsconfig->SetAsicTimeOffset(65, 6.79433);
-    stsconfig->SetAsicTimeOffset(66, 5.57188);
-    stsconfig->SetAsicTimeOffset(67, 4.78256);
-    stsconfig->SetAsicTimeOffset(68, 4.47773);
-    stsconfig->SetAsicTimeOffset(69, 3.70702);
-    stsconfig->SetAsicTimeOffset(70, 4.02281);
-    stsconfig->SetAsicTimeOffset(71, 4.74402);
-    stsconfig->SetAsicTimeOffset(72, 2.13448);
-    stsconfig->SetAsicTimeOffset(73, 3.28798);
-    stsconfig->SetAsicTimeOffset(74, 4.13604);
-    stsconfig->SetAsicTimeOffset(76, 5.02552);
-    stsconfig->SetAsicTimeOffset(77, 3.55128);
-    stsconfig->SetAsicTimeOffset(78, 4.66596);
-    stsconfig->SetAsicTimeOffset(79, 3.76298);
-    // U1 MOD0
-    stsconfig->SetAsicTimeOffset(48, 10.0742);
-    stsconfig->SetAsicTimeOffset(49, 9.31221);
-    stsconfig->SetAsicTimeOffset(50, 6.09788);
-    stsconfig->SetAsicTimeOffset(51, 2.85866);
-    stsconfig->SetAsicTimeOffset(52, 5.45111);
-    stsconfig->SetAsicTimeOffset(53, 3.18376);
-    stsconfig->SetAsicTimeOffset(54, 4.77448);
-    stsconfig->SetAsicTimeOffset(55, 3.20388);
-    stsconfig->SetAsicTimeOffset(56, 3.37812);
-    stsconfig->SetAsicTimeOffset(57, 4.08165);
-    stsconfig->SetAsicTimeOffset(58, 5.06481);
-    stsconfig->SetAsicTimeOffset(59, 4.39388);
-    stsconfig->SetAsicTimeOffset(60, 5.63931);
-    stsconfig->SetAsicTimeOffset(61, 4.15354);
-    stsconfig->SetAsicTimeOffset(62, 6.67062);
-    stsconfig->SetAsicTimeOffset(63, 6.33579);
-    // U0 MOD1
-    stsconfig->SetAsicTimeOffset(24, 5.01505);
-    stsconfig->SetAsicTimeOffset(25, 3.84039);
-    stsconfig->SetAsicTimeOffset(26, 5.36344);
-    stsconfig->SetAsicTimeOffset(27, 2.96807);
-    stsconfig->SetAsicTimeOffset(28, 4.14668);
-    stsconfig->SetAsicTimeOffset(29, 2.4282);
-    stsconfig->SetAsicTimeOffset(30, 4.02055);
-    stsconfig->SetAsicTimeOffset(31, 4.13309);
-    stsconfig->SetAsicTimeOffset(32, 1.2073);
-    stsconfig->SetAsicTimeOffset(33, 4.02747);
-    stsconfig->SetAsicTimeOffset(34, 5.03306);
-    stsconfig->SetAsicTimeOffset(35, 3.5234);
-    stsconfig->SetAsicTimeOffset(36, 5.41946);
-    stsconfig->SetAsicTimeOffset(37, 4.82807);
-    stsconfig->SetAsicTimeOffset(38, 6.33436);
-    stsconfig->SetAsicTimeOffset(39, 4.71413);
-    // U0 MOD0
-    stsconfig->SetAsicTimeOffset(8, 8.15031);
-    stsconfig->SetAsicTimeOffset(9, 6.99897);
-    stsconfig->SetAsicTimeOffset(10, 8.14826);
-    stsconfig->SetAsicTimeOffset(11, 3.29095);
-    stsconfig->SetAsicTimeOffset(12, 3.04337);
-    stsconfig->SetAsicTimeOffset(14, 3.71628);
-    stsconfig->SetAsicTimeOffset(15, 3.82512);
-    stsconfig->SetAsicTimeOffset(16, 4.05862);
-    stsconfig->SetAsicTimeOffset(17, 4.53291);
-    stsconfig->SetAsicTimeOffset(18, 5.22825);
-    stsconfig->SetAsicTimeOffset(19, 4.93144);
-    stsconfig->SetAsicTimeOffset(20, 6.33821);
-    stsconfig->SetAsicTimeOffset(21, 5.66979);
-    stsconfig->SetAsicTimeOffset(22, 9.33802);
-    stsconfig->SetAsicTimeOffset(23, 7.41302);
+    walkMap[0x10107C02] = CbmStsParModule(*parMod);  // Make a copy for storage
+    walkMap[0x101FFC02] = CbmStsParModule(*parMod);  // Make a copy for storage
+
+    /// To be replaced by a storage in a new parameter class later
+    int sensor, asic;
+    std::ifstream asicTimeWalk_par(Form("%s/mStsAsicTimeWalk.par", parfilesbasepathSts.data()));
+    while (asicTimeWalk_par >> std::hex >> sensor >> std::dec >> asic >> p0 >> p1 >> p2 >> p3) {
+      std::cout << Form("Setting time-walk parametersfor: module %x, ASIC %u\n", sensor, asic);
+      parAsic->SetWalkCoef({p0, p1, p2, p3});
+
+      if (walkMap.find(sensor) == walkMap.end()) { walkMap[sensor] = CbmStsParModule(*parMod); }
+      walkMap[sensor].SetAsic(asic, *parAsic);
+    }
+
+    stsconfig->SetWalkMap(walkMap);
   }
   // -------------
 
@@ -317,20 +243,19 @@ void run_unpack_tsa(std::vector<std::string> infile = {"test.tsa"}, UInt_t runid
   // In general, the following parts need not be touched
   // ========================================================================
 
-
   // -----   Timer   --------------------------------------------------------
   TStopwatch timer;
   timer.Start();
   // ------------------------------------------------------------------------
 
-
   // -----   CbmSourceTsArchive   -------------------------------------------
   auto source = new CbmSourceTsArchive(infile);
   auto unpack = source->GetRecoUnpack();
   unpack->SetDoPerfProfiling(doPerfProfiling);
   unpack->SetOutputFilename(perfProfFileName);
-  /// Enable full time sorting instead of time sorting per FLIM link
-  //unpack->SetTimeSorting(true);
+  // Enable full time sorting instead sorting per FLIM link
+  unpack->SetTimeSorting(true);
+
   if (psdconfig) unpack->SetUnpackConfig(psdconfig);
   if (richconfig) unpack->SetUnpackConfig(richconfig);
   if (stsconfig) unpack->SetUnpackConfig(stsconfig);
@@ -339,7 +264,6 @@ void run_unpack_tsa(std::vector<std::string> infile = {"test.tsa"}, UInt_t runid
   if (tofconfig) unpack->SetUnpackConfig(tofconfig);
   // ------------------------------------------------------------------------
 
-
   // -----   FairRunAna   ---------------------------------------------------
   auto run  = new FairRunOnline(source);
   auto sink = new FairRootFileSink(outfilename.data());
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx
index 4a0f00e7070019a3215cd7978ba79151aa7c867b..52bc7a98eeafefffff8910256514902badece8f3 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx
+++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx
@@ -509,6 +509,11 @@ void CbmStsUnpackAlgo::processHitInfo(const stsxyter::Message& mess)
       double dTimeInNs         = tsreltime - fSystemTimeOffset;
       if (uAsicIdx < fvdTimeOffsetNsAsics.size()) dTimeInNs -= fvdTimeOffsetNsAsics[uAsicIdx];
 
+      // Time-Walk correction
+      if (fbUseTimeWalkCorrection == true) {
+        dTimeInNs += fWalkLookup[fviFebAddress[uFebIdx]][uChanInMod / fNrChsPerAsic][usRawAdc];
+      }
+
       const uint64_t ulTimeInNs = static_cast<uint64_t>(dTimeInNs);
       const double dCalAdc      = fvdFebAdcOffs[uFebIdx] + (usRawAdc - 1) * fvdFebAdcGain[uFebIdx];
 
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.cxx b/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.cxx
index bc021b48a27f977df5cfae6fd740626b4f5e5771..e3a4308b416ab29a79c881ee758bb70319d159dd 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.cxx
+++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.cxx
@@ -23,4 +23,23 @@ std::vector<std::pair<std::string, std::shared_ptr<FairParGenericSet>>>*
   return &fParContVec;
 }
 
+void CbmStsUnpackAlgoBase::SetWalkMap(const std::map<uint32_t, CbmStsParModule>& mapIn)
+{
+  auto modIt = mapIn.begin();
+  for (auto& mapInEntry : mapIn) {
+    const std::vector<CbmStsParAsic>& asicPars = (mapInEntry.second).GetAsicParams();
+    uint32_t uNbAsics                          = asicPars.size();
+    fWalkLookup[mapInEntry.first].resize(uNbAsics);
+    for (uint32_t asicIdx = 0; asicIdx < uNbAsics; ++asicIdx) {
+      fWalkLookup[mapInEntry.first][asicIdx].resize(32);
+      for (double uAdc = 0; uAdc < 32; ++uAdc) {
+        fWalkLookup[mapInEntry.first][asicIdx][uAdc] =
+          asicPars[asicIdx].GetWalkCoef(3) * uAdc * uAdc * uAdc + asicPars[asicIdx].GetWalkCoef(2) * uAdc * uAdc
+          + asicPars[asicIdx].GetWalkCoef(1) * uAdc + asicPars[asicIdx].GetWalkCoef(0);
+      }
+    }
+  }
+  fbUseTimeWalkCorrection = true;
+}
+
 ClassImp(CbmStsUnpackAlgoBase)
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h b/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h
index 3dd9c004f39d1de736321305dc4afe8f4e03f013..7c77c64b479a399f60761177221892f47cf92c23 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h
+++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h
@@ -24,6 +24,7 @@
 #include "CbmErrorMessage.h"  // REMARK see remark in CbmStsUnpackConfig
 #include "CbmRecoUnpackAlgo.tmpl"
 #include "CbmStsDigi.h"
+#include "CbmStsParModule.h"
 #include "CbmStsUnpackMonitor.h"
 
 #include "Timeslice.hpp"  // timeslice
@@ -64,6 +65,9 @@ public:
   /** @brief Set the time offset per Asic */
   void SetAsicTimeOffsetVec(std::vector<double> value) { fvdTimeOffsetNsAsics.swap(value); }
 
+  /** @brief Enable/Disable time-walk correction */
+  void SetWalkMap(const std::map<uint32_t, CbmStsParModule>& mapIn);
+
   /** @brief Enable/Disable the duplicate digis rejection, without or with same ADC checks */
   void SetDuplicatesRejection(bool bIn = true, bool bDiffAdc = true)
   {
@@ -118,6 +122,12 @@ protected:
   /** @brief Time offsets per Asic??? @todo expert confirmation required */
   std::vector<double> fvdTimeOffsetNsAsics = {};
 
+  /** @brief Enable/Disable time-walk correction */
+  bool fbUseTimeWalkCorrection = false;
+
+  /** @brief Per-ASIC's sensors Time-Walk correction mapping */
+  std::map<uint32_t, std::vector<std::vector<double>>> fWalkLookup = {};
+
   /** @brief Enables the rejection of duplicate digis */
   bool fbRejectDuplicateDigis = false;
 
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx b/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
index b6c7be4c2284d00566865f978a9c64749c3c998b..d8b0ad0f1bf2819d079edfc3119171079a5857f0 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
+++ b/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
@@ -36,6 +36,9 @@ void CbmStsUnpackConfig::InitAlgo()
   // Set the single asics time offsets
   fAlgo->SetAsicTimeOffsetVec(fvdTimeOffsetNsAsics);
 
+  // Set Time Walk Correction map
+  fAlgo->SetWalkMap(fWalkMap);
+
   // Set the flags for duplicate digis rejections
   fAlgo->SetDuplicatesRejection(fbRejectDuplicateDigis, fbDupliWithoutAdc);
 
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackConfig.h b/reco/detectors/sts/unpack/CbmStsUnpackConfig.h
index d71c152a649d5f6e775faab39c31f422d5459837..8a377c5b51681328260face946a8fe514ca3a90f 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackConfig.h
+++ b/reco/detectors/sts/unpack/CbmStsUnpackConfig.h
@@ -21,6 +21,7 @@
 #include "CbmErrorMessage.h"  // REMARK this should become a Sts specific container I Would propose PR
 #include "CbmRecoUnpackConfig.tmpl"
 #include "CbmStsDigi.h"
+#include "CbmStsParModule.h"
 #include "CbmStsUnpackAlgo.h"
 #include "CbmStsUnpackMonitor.h"
 
@@ -92,6 +93,8 @@ public:
     if (fvdTimeOffsetNsAsics.size() < (asicid + 1)) fvdTimeOffsetNsAsics.resize(asicid + 1);
     fvdTimeOffsetNsAsics.at(asicid) = value;
   }
+  /** @brief Set Time-Walk correction map */
+  void SetWalkMap(const std::map<uint32_t, CbmStsParModule>& mapIn) { fWalkMap = mapIn; }
 
   /** @brief Enable/Disable the duplicate digis rejection, without or with same ADC checks */
   void SetDuplicatesRejection(bool bIn = true, bool bDiffAdc = true)
@@ -129,6 +132,12 @@ protected:
   /** @brief Vector with the Asic time offsets */
   std::vector<double> fvdTimeOffsetNsAsics = {};
 
+  /** @brief Enables time-walk correction */
+  bool fbUseTimeWalkCorrection = false;
+
+  /** @brief Time-Walk Parameters map */
+  std::map<uint32_t, CbmStsParModule> fWalkMap = {};
+
   /** @brief Enables the rejection of duplicate digis */
   bool fbRejectDuplicateDigis = false;