diff --git a/lib/daemon.py b/lib/daemon.py
index f5e18a25bc0252b6320633f8403580fb23b02793..e229f7569da137028af8a9ea51ef63b7b78e6bbc 100644
--- a/lib/daemon.py
+++ b/lib/daemon.py
@@ -451,10 +451,12 @@ class Mainloop(object):
     assert isinstance(signal_handlers, dict) and \
            len(signal_handlers) > 0, \
            "Broken SignalHandled decorator"
-    running = True
+
+    # Counter for received signals
+    shutdown_signals = 0
 
     # Start actual main loop
-    while running:
+    while shutdown_signals < 1:
       if not self.scheduler.empty():
         try:
           self.scheduler.run()
@@ -464,11 +466,12 @@ class Mainloop(object):
         asyncore.loop(count=1, use_poll=True)
 
       # Check whether a signal was raised
-      for sig in signal_handlers:
-        handler = signal_handlers[sig]
+      for (sig, handler) in signal_handlers.items():
         if handler.called:
           self._CallSignalWaiters(sig)
-          running = sig not in (signal.SIGTERM, signal.SIGINT)
+          if sig in (signal.SIGTERM, signal.SIGINT):
+            logging.info("Received signal %s asking for shutdown", sig)
+            shutdown_signals += 1
           handler.Clear()
 
   def _CallSignalWaiters(self, signum):