From a2d158b12a4031005fc198fa84e6806e4432f04a Mon Sep 17 00:00:00 2001
From: pcain-usgs <pcain@usgs.gov>
Date: Tue, 20 Oct 2020 16:51:03 -0600
Subject: [PATCH] Account for starttime exceeding endtime

---
 geomagio/TimeseriesUtility.py  |  4 ++++
 test/TimeseriesUtility_test.py | 15 +++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/geomagio/TimeseriesUtility.py b/geomagio/TimeseriesUtility.py
index 1c64c522f..230c87b35 100644
--- a/geomagio/TimeseriesUtility.py
+++ b/geomagio/TimeseriesUtility.py
@@ -2,6 +2,7 @@
 from builtins import range
 from datetime import datetime
 import math
+import sys
 import numpy
 import obspy.core
 
@@ -48,6 +49,9 @@ def create_empty_trace(
     )
     if delta > 60.0:
         trace_starttime += (delta - 60) / 2
+        if trace_starttime > endtime:
+            sys.stderr.write("Starttime greater than endtime, shifting endtime to next sample")
+            endtime = trace_starttime + delta
     stats.starttime = trace_starttime
     stats.delta = delta
     # Calculate number of valid samples up to or before endtime
diff --git a/test/TimeseriesUtility_test.py b/test/TimeseriesUtility_test.py
index c3fbb9185..f769ef3f2 100644
--- a/test/TimeseriesUtility_test.py
+++ b/test/TimeseriesUtility_test.py
@@ -84,6 +84,21 @@ def test_create_empty_trace():
 
     assert_equal(day_trace.stats.starttime, UTCDateTime("2018-01-01T11:59:30Z"))
 
+    short_trace = TimeseriesUtility.create_empty_trace(
+        starttime=trace1.stats.starttime,
+        endtime=trace1.stats.starttime + 1,
+        observatory=observatory,
+        channel="F",
+        type="variation",
+        interval="day",
+        network=network,
+        station=trace1.stats.station,
+        location=location,
+    )
+
+    assert_equal(short_trace.stats.starttime, UTCDateTime("2018-01-01T11:59:30Z"))
+    assert_equal(short_trace.stats.endtime, UTCDateTime("2018-01-02T11:59:30Z"))
+
 
 def test_get_stream_gaps():
     """TimeseriesUtility_test.test_get_stream_gaps()
-- 
GitLab