diff --git a/src/calng/PickyBoi.py b/src/calng/PickyBoi.py
index e66ceb4621a90d894fc3cb6d127ef9764f883499..4cbf20194b55bf2a7053beece3dc334203b43fbf 100644
--- a/src/calng/PickyBoi.py
+++ b/src/calng/PickyBoi.py
@@ -63,6 +63,14 @@ class PickyBoi(PythonDevice):
             .key("input")
             .commit(),
 
+
+            BOOL_ELEMENT(expected)
+            .key("breakStreamAfterEnd")
+            .description("If active, end the output stream after the range of selected train IDs has been forwarded.")
+            .assignmentOptional()
+            .defaultValue(False)
+            .commit(),
+
             UINT64_ELEMENT(expected)
             .key("nextTrainToCatch")
             .assignmentOptional()
@@ -299,6 +307,9 @@ class PickyBoi(PythonDevice):
                     self.updateState(State.MONITORING)
             else:
                 # past capture range
+                # if breakStreamAfterEnd is set, end the stream
+                if self.get("breakStreamAfterEnd"):
+                    self.signalEndOfStream("output")
                 if self._remaining_trains:
                     # note: wouuld also get triggered by receiving the same train twice
                     self.log.ERROR(f"Missed some train(s): {self._remaining_trains}")