diff --git a/sim/detectors/sts/CbmStsSimModule.cxx b/sim/detectors/sts/CbmStsSimModule.cxx
index c6007537b8ed87f2f7f126d0bdace3e03912ff8e..894667e1fe8fb4fb39c6442751da4ddc5d28010c 100644
--- a/sim/detectors/sts/CbmStsSimModule.cxx
+++ b/sim/detectors/sts/CbmStsSimModule.cxx
@@ -143,8 +143,9 @@ void CbmStsSimModule::Digitize(UShort_t channel, CbmStsSignal* signal)
   if (adc < 0) return;  // Charge below threshold
 
   // --- Digitise time
-  Double_t deltaT = gRandom->Gaus(0., asic.GetTimeResol());
-  Long64_t dTime  = Long64_t(round(signal->GetTime() + deltaT));
+  Double_t deltaT = 0.;
+  if (!(asic.GetTimeResol() < 0.)) deltaT = gRandom->Gaus(0., asic.GetTimeResol());
+  Long64_t dTime = Long64_t(round(signal->GetTime() + deltaT));
 
   // --- Send the message to the digitiser task
   UInt_t address = fElement->GetAddress();
@@ -162,7 +163,7 @@ void CbmStsSimModule::Digitize(UShort_t channel, CbmStsSignal* signal)
 Int_t CbmStsSimModule::GenerateNoise(Double_t t1, Double_t t2)
 {
 
-  assert(t2 > t1);
+  if (!(t2 > t1)) return 0;
   Int_t nNoiseAll      = 0;
   UInt_t nAsicChannels = fParams->GetNofAsicChannels();
 
diff --git a/sim/response/base/CbmDigitizationSource.h b/sim/response/base/CbmDigitizationSource.h
index d9eb0c3ad05b8730cd86c67c3935b8aed1dc3ff3..43e30dfdbf1189d3b8472058fc28e9135fc3ab32 100644
--- a/sim/response/base/CbmDigitizationSource.h
+++ b/sim/response/base/CbmDigitizationSource.h
@@ -219,8 +219,8 @@ public:
 
 private:
   std::vector<CbmMCInputSet*> fInputSets;
-  std::map<UInt_t, CbmMCInputSet*> fInputMap;     //! input ID -> inputSet
-  std::map<Double_t, CbmMCInputSet*> fNextEvent;  //! time -> inputSet
+  std::map<UInt_t, CbmMCInputSet*> fInputMap;          //! input ID -> inputSet
+  std::multimap<Double_t, CbmMCInputSet*> fNextEvent;  //! time -> inputSet
   FairMCEventHeader* fMCEventHeader;
   TObjArray* fListOfFolders;
   std::set<TString> fBranches;  // List of branches names