diff --git a/gstlal-ugly/gst/lal/gstlal_interpolator.c b/gstlal-ugly/gst/lal/gstlal_interpolator.c
index 826f90fd832b128054dc533fe6bb65b7810160f6..1a4c01f958cc7bc3192e7c7c2cd0a97db0f7a937 100644
--- a/gstlal-ugly/gst/lal/gstlal_interpolator.c
+++ b/gstlal-ugly/gst/lal/gstlal_interpolator.c
@@ -517,6 +517,7 @@ static GstCaps* transform_caps (GstBaseTransform *trans, GstPadDirection directi
 
 	gint channels;
 	GstAudioInfo info;
+	GstCaps *res;
 	char capsstr[256] = {0};
 
 	if (direction == GST_PAD_SINK && gst_caps_is_fixed(caps)) {
@@ -527,7 +528,16 @@ static GstCaps* transform_caps (GstBaseTransform *trans, GstPadDirection directi
 		return gst_caps_from_string(capsstr);
 	}
 
-	return gst_caps_from_string("audio/x-raw, format= (string) {" GST_AUDIO_NE(F32) ", " GST_AUDIO_NE(F64) "}, rate = (int) {4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}, channels = (int) [1, MAX]");
+	res = gst_caps_from_string("audio/x-raw, format= (string) {" GST_AUDIO_NE(F32) ", " GST_AUDIO_NE(F64) "}, rate = (int) {4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}, channels = (int) [1, MAX]");
+
+	if (filter) {
+		GstCaps *intersection;
+		intersection = gst_caps_intersect_full(filter, res, GST_CAPS_INTERSECT_FIRST);
+		gst_caps_unref(res);
+		res = intersection;
+	}
+
+	return res;
 }