diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
index 79bbd92d647b5d2e1d06239c7e4a7ce5e2137174..8d5fa0f52e8f5bd4c7c1660601e4f3f9c21c7df0 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
@@ -687,13 +687,13 @@ class FailureReport():
                 system_events = self.system_events.filter(**{f'{field_name}__value': d[f'{field_name}__value']})
                 affected_tasks = models.TaskBlueprint.objects.filter(system_events__in=system_events)
                 affected_units = (models.SchedulingUnitBlueprint.objects.filter(task_blueprints__in=affected_tasks))
-                total_on_sky_duration_lost = affected_units.aggregate(Sum(F('on_sky_duration')))['on_sky_duration__sum']
+                total_on_sky_duration_lost = affected_units.aggregate(on_sky_duration__sum=Sum(Coalesce(F('on_sky_duration'), timedelta(0))))['on_sky_duration__sum']
 
                 # convert durations to seconds and add derived values
                 d.update({'duration_lost_event': d['duration_lost_event'].total_seconds(),
                           'duration_lost_on_sky': total_on_sky_duration_lost.total_seconds() if total_on_sky_duration_lost else 0,
                           'percent_of_wall_time_lost_event': 100 * d['duration_lost_event'].total_seconds() / wall_time,
-                          'percent_of_wall_time_lost_on_sky': total_on_sky_duration_lost.total_seconds() / wall_time})
+                          'percent_of_wall_time_lost_on_sky': total_on_sky_duration_lost.total_seconds() / wall_time if total_on_sky_duration_lost else 0})
 
             aggregates[f'by_{field_name}'] = group_aggregates
         return aggregates