diff --git a/test/algorithm_test/FilterAlgorithm_test.py b/test/algorithm_test/FilterAlgorithm_test.py
index bc98a21e6dfafff63b5e31a32a7664e3365ee16d..2dcb627e38158de71c1a6ee34cb85bc222f0d1d1 100644
--- a/test/algorithm_test/FilterAlgorithm_test.py
+++ b/test/algorithm_test/FilterAlgorithm_test.py
@@ -265,6 +265,33 @@ def test_starttime_shift():
     assert_equal(filtered[0].stats.endtime, UTCDateTime("2020-01-01T00:13:00Z"))
 
 
+def test_align_trace():
+    """algorithm_test.FilterAlgorithm_test.test_align_trace()
+    Tests algorithm for minute to hour with expected behavior, trailing samples, and missing samples
+    """
+    f = FilterAlgorithm(input_sample_period=60.0, output_sample_period=3600.0)
+    bou = read("etc/filter/hor_filter_min.mseed")
+    # check intial assumptions
+    precise = f.process(bou)
+    assert_equal(precise[0].stats.starttime, UTCDateTime("2020-08-31T00:29:30"))
+    assert_equal(precise[0].stats.endtime, UTCDateTime("2020-08-31T03:29:30"))
+    # check for filtered product producing the correct interval with trailing samples
+    trimmed = bou.copy().trim(
+        starttime=UTCDateTime("2020-08-31T01:00:00"),
+        endtime=UTCDateTime("2020-08-31T02:04:00"),
+    )
+    filtered = f.process(trimmed)
+    assert_equal(filtered[0].stats.starttime, UTCDateTime("2020-08-31T01:29:30"))
+    assert_equal(filtered[0].stats.endtime, UTCDateTime("2020-08-31T01:29:30"))
+    # test for skipped sample when not enough data is given for first interval
+    trimmed = bou.copy().trim(
+        starttime=UTCDateTime("2020-08-31T01:30:00"), endtime=bou[0].stats.endtime
+    )
+    filtered = f.process(trimmed)
+    assert_equal(filtered[0].stats.starttime, UTCDateTime("2020-08-31T02:29:30"))
+    assert_equal(filtered[0].stats.endtime, UTCDateTime("2020-08-31T03:29:30"))
+
+
 def test_validate_steps():
     """algorithm_test.FilterAlgorithm_test.test_validate_steps()
     Validates algorithm steps 10 Hz to second with custom coefficients.