diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackAlgoFasp2D.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackAlgoFasp2D.cxx
index aa0e31b42a7336d8fb65118208b12273f0d06c3d..17bdefc87a15ff15bfd3b2c08ec473bf28009dcd 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackAlgoFasp2D.cxx
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackAlgoFasp2D.cxx
@@ -280,7 +280,7 @@ bool CbmTrdUnpackAlgoFasp2D::unpack(const fles::Timeslice* ts, std::uint16_t ico
   // Cast required to silence a warning on macos (there a uint64_t is a llu)
   if (VERBOSE) printf("time start %lu\n", static_cast<size_t>(msdesc.idx));
   // define time wrt start of time slice in TRD/FASP clks [80 MHz]
-  fTime[0] = ULong64_t((msdesc.idx - fTsStartTime) / 12.5);
+  fTime[0] = ULong64_t((msdesc.idx - fTsStartTime - fSystemTimeOffset) / 12.5);
 
   // Get the µslice size in bytes to calculate the number of completed words
   auto mssize = msdesc.size;