diff --git a/geomagio/DerivedTimeseriesFactory.py b/geomagio/DerivedTimeseriesFactory.py
index c2a4fca2b4284f088a859a723b7cc0d734ea2f40..c722bf312af962576c75693c32a7eac75bc0e07e 100644
--- a/geomagio/DerivedTimeseriesFactory.py
+++ b/geomagio/DerivedTimeseriesFactory.py
@@ -63,6 +63,8 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
                     data_type=type,
                     interval=interval,
                 )
+        # file-based factories return all channels found in file
+        timeseries = Stream([t for t in timeseries if t.stats.channel in channels])
         for channel in channels:
             self.factory._set_metadata(
                 stream=timeseries.select(channel=channel),
@@ -71,8 +73,6 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
                 type=type,
                 interval=interval,
             )
-        # file-based factories return all channels found in file
-        timeseries = Stream([t for t in timeseries if t.stats.channel in channels])
         return timeseries
 
     def _get_derived_channels(
diff --git a/geomagio/TimeseriesFactory.py b/geomagio/TimeseriesFactory.py
index 38b89d448122c6b3d33f8b2ae7f4499eadd4b28b..3d92f9c58f3b0ed26f24c4c97801747bf98b8d90 100644
--- a/geomagio/TimeseriesFactory.py
+++ b/geomagio/TimeseriesFactory.py
@@ -533,7 +533,7 @@ class TimeseriesFactory(object):
 
     def _set_metadata(
         self,
-        stream: obspy.core.Trace,
+        stream: obspy.core.Stream,
         observatory: str,
         channel: str,
         type: str,
diff --git a/geomagio/edge/EdgeFactory.py b/geomagio/edge/EdgeFactory.py
index 43ad195243453c21677b1d80c66a01b4c6733d37..c25955fe141ab4114ed5c28b4a95d32ff1cfe2ed 100644
--- a/geomagio/edge/EdgeFactory.py
+++ b/geomagio/edge/EdgeFactory.py
@@ -470,7 +470,7 @@ class EdgeFactory(TimeseriesFactory):
 
     def _set_metadata(
         self,
-        stream: obspy.core.Trace,
+        stream: obspy.core.Stream,
         observatory: str,
         channel: str,
         type: str,
diff --git a/geomagio/edge/MiniSeedFactory.py b/geomagio/edge/MiniSeedFactory.py
index 7208e36e199175f0c433f865ce96c6d6518b2203..94103caee23b037e93eb6d0dfc967a92e8951721 100644
--- a/geomagio/edge/MiniSeedFactory.py
+++ b/geomagio/edge/MiniSeedFactory.py
@@ -502,7 +502,7 @@ class MiniSeedFactory(TimeseriesFactory):
 
     def _set_metadata(
         self,
-        stream: obspy.core.Trace,
+        stream: obspy.core.Stream,
         observatory: str,
         channel: str,
         type: str,