diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx
index 65dfdf13ac5e54a459af76799c63445ae17740ba..1c6367b9e506cdf23098d6a5dc01eee907d5c58c 100644
--- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx
+++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx
@@ -549,6 +549,7 @@ StatusCode TrigSignatureMoniMT::initBunchHist(LockedHandle<TH2>& hist, SG::ReadH
   return StatusCode::SUCCESS;
 }
 
+
 TrigSignatureMoniMT::RateHistogram::~RateHistogram(){
   delete m_bufferHistogram.get();
 }
@@ -589,6 +590,13 @@ void TrigSignatureMoniMT::RateHistogram::startTimer(unsigned int duration, unsig
 
 void TrigSignatureMoniMT::RateHistogram::stopTimer() {
   if (m_timer) {
+    m_stopCallback = true;
+
+    // wait for the pending signals to be stopped
+    while (m_stopCallback) {
+      usleep(m_duration*50*1000); //microseconds
+    }
+
     m_timer.reset();
     time_t t = time(0);
     unsigned int interval;
@@ -611,10 +619,13 @@ void TrigSignatureMoniMT::RateHistogram::callback() const {
   unsigned int newinterval;
   unsigned int oldinterval;
 
-  if ( m_timeDivider->isPassed(t, newinterval, oldinterval) ) {
+  if (m_timeDivider->isPassed(t, newinterval, oldinterval)) {
     updatePublished(m_duration);
   }
 
-  //schedule itself in another 1/20 of the integration period in milliseconds
-  if ( m_timer ) m_timer->start(m_duration*50);
+  //stop callback if timer is going to be deleted
+  //else schedule itself in another 1/20 of the integration period in milliseconds
+  if (bool exp=true; not m_stopCallback.compare_exchange_strong(exp,false)) {
+	m_timer->start(m_duration*50);
+  }
 }
diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h
index 4ed41f5a1df2e076e24607e3043cb404cdba4edc..b8577dc9af617e0024b3fb2b030bcbae232cf23e 100644
--- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h
+++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h
@@ -67,6 +67,7 @@ class TrigSignatureMoniMT : public extends<AthReentrantAlgorithm, IIncidentListe
     mutable LockedHandle<TH2> m_bufferHistogram;
     mutable LockedHandle<TH2> m_histogram;
     std::mutex m_mutex;
+    mutable std::atomic_bool m_stopCallback {false};
     std::unique_ptr<Athena::AlgorithmTimer> m_timer;
     std::unique_ptr<TimeDivider> m_timeDivider;
     unsigned int m_duration;