diff --git a/src/core/events.py b/src/core/events.py
index 2a2dcb87394a3f6b6735d6ec9b3cd4a2311aa6cb..8652ae4d361868e6dd0efb6cc85c854d40ec6afa 100644
--- a/src/core/events.py
+++ b/src/core/events.py
@@ -204,6 +204,19 @@ class EngineEventDispatcher():
         thread.start() 
 
 
+    def on_timeslot_end(self, timeslot):
+        """
+        Called when a timeslot ends.
+        """
+        def func(self, timeslot):        
+            self.logger.debug("on_timeslot_end(..)")
+            self.fallback_manager.on_timeslot_end(timeslot)
+            self.call_event("on_timeslot_end", timeslot)
+
+        thread = Thread(target = func, args = (self, timeslot))
+        thread.start()
+
+
     def on_play(self, entry):
         """
         Event Handler which is called by the engine when some entry is actually playing. 
diff --git a/src/scheduling/scheduler.py b/src/scheduling/scheduler.py
index 198524e848b365c7d0298a326677cb223256127f..ebabe85454d91e4ca70b0d9e85d2a8fd1d9d71b4 100644
--- a/src/scheduling/scheduler.py
+++ b/src/scheduling/scheduler.py
@@ -52,7 +52,7 @@ class EntryQueueState(Enum):
 
 class TimeslotCommand(EngineExecutor):
     """
-    Command for triggering start of timeslot events.
+    Command for triggering start and end of timeslot events.
     """
     engine = None
 
@@ -68,8 +68,13 @@ class TimeslotCommand(EngineExecutor):
         def do_start_timeslot(timeslot):
             self.logger.info(SU.cyan(f"=== on_timeslot_start('{timeslot}') ==="))
             self.engine.event_dispatcher.on_timeslot_start(timeslot)
-                            
-        super().__init__("TIMESLOT", None, timeslot.start_unix, do_start_timeslot, timeslot)
+
+        def do_end_timeslot(timeslot):
+            self.logger.info(SU.cyan(f"=== on_timeslot_end('{timeslot}') ==="))
+            self.engine.event_dispatcher.on_timeslot_end(timeslot)
+
+        child_timer = EngineExecutor("TIMESLOT", None, timeslot.end_unix, do_end_timeslot, timeslot)                            
+        super().__init__("TIMESLOT", child_timer, timeslot.start_unix, do_start_timeslot, timeslot)