diff --git a/geomagio/Controller.py b/geomagio/Controller.py
index 78e62aa3b71151689d77f1195781e99ea2090f6d..9d50ceb2a18a17f0c0fad8957d53d13348c6fc78 100644
--- a/geomagio/Controller.py
+++ b/geomagio/Controller.py
@@ -380,14 +380,6 @@ class Controller(object):
         output_channels = output_channels or algorithm.get_output_channels()
         input_interval = input_interval or self._inputInterval
         output_interval = output_interval or self._outputInterval
-        print(
-            "checking gaps",
-            starttime,
-            endtime,
-            output_observatory,
-            output_channels,
-            file=sys.stderr,
-        )
         # request output to see what has already been generated
         output_timeseries = self._get_output_timeseries(
             observatory=output_observatory,
@@ -397,6 +389,19 @@ class Controller(object):
             interval=output_interval,
         )
         if len(output_timeseries) > 0:
+            # force starttime & endtime to be consistent with output_interval
+            # FIXME: this is lazy; a better solution would be to use something
+            #        like FilterAlgorithm's get_nearest_time() -EJR
+            starttime = output_timeseries[0].stats.starttime
+            endtime = output_timeseries[0].stats.endtime
+            print(
+                "checking gaps",
+                starttime,
+                endtime,
+                output_observatory,
+                output_channels,
+                file=sys.stderr,
+            )
             # find gaps in output, so they can be updated
             output_gaps = TimeseriesUtility.get_merged_gaps(
                 TimeseriesUtility.get_stream_gaps(output_timeseries)