diff --git a/program/services.py b/program/services.py
index 255d1b4513527c18c024a7829aac93a548870cef..baba59fa17f5cf17b42d26b10c0c9f2b5b3edb7f 100644
--- a/program/services.py
+++ b/program/services.py
@@ -745,13 +745,15 @@ def generate_program_entries(
         start = timezone.now()
     if end is None:
         end = start + timedelta(days=1)
+
+    queryset = queryset.order_by("start")
     # Find all timeslots that
     #   * have started before the specified start value but end after it
     #   * or end after the specified end value but start before it
-    queryset = queryset.filter(end__gt=start, start__lt=end).order_by("start")
+    timeslots = queryset.filter(end__gt=start, start__lt=end)
 
     if not include_virtual:
-        yield from (create_timeslot_entry(timeslot) for timeslot in queryset)
+        yield from (create_timeslot_entry(timeslot) for timeslot in timeslots)
         return
 
     # Program entries that are not based on scheduled timeslots are generated using the fallback
@@ -760,7 +762,7 @@ def generate_program_entries(
 
     entry_start = start
     timeslot: TimeSlot
-    for timeslot in queryset:
+    for timeslot in timeslots:
         if timeslot.start > entry_start:
             yield create_entry(entry_start, timeslot.start, fallback_show)
         yield create_timeslot_entry(timeslot)