diff --git a/gstlal-ugly/gst/lal/gstlal_interpolator.c b/gstlal-ugly/gst/lal/gstlal_interpolator.c
index 320fb654176d28e50d42424d98ba6cf73f30b9cd..78cb02d658b6f3e687a1534d27bca3b6d6da9cb7 100644
--- a/gstlal-ugly/gst/lal/gstlal_interpolator.c
+++ b/gstlal-ugly/gst/lal/gstlal_interpolator.c
@@ -501,6 +501,7 @@ static void gstlal_interpolator_init(GSTLALInterpolator *element)
 	/* Always initialize with a discont */
 	element->need_discont = TRUE;
 	element->need_pretend = TRUE;
+	element->last_gap_state = FALSE;
 
 	element->adapter = g_object_new(GST_TYPE_AUDIOADAPTER, NULL);
 }
@@ -802,10 +803,14 @@ static void set_metadata(GSTLALInterpolator *element, GstBuffer *buf, guint64 ou
 		GST_BUFFER_FLAG_SET(buf, GST_BUFFER_FLAG_DISCONT);
 		element->need_discont = FALSE;
 	}
-	if(gap)
+	if(gap) {
 		GST_BUFFER_FLAG_SET(buf, GST_BUFFER_FLAG_GAP);
-	else
+		element->last_gap_state = TRUE;
+	}
+	else {
 		GST_BUFFER_FLAG_UNSET(buf, GST_BUFFER_FLAG_GAP);
+		element->last_gap_state = FALSE;
+	}
 	GST_INFO_OBJECT(element, "%s%s output_buffer %p spans %" GST_BUFFER_BOUNDARIES_FORMAT, gap ? "gap" : "nongap", GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLAG_DISCONT) ? "+discont" : "", buf, GST_BUFFER_BOUNDARIES_ARGS(buf));
 }
 
@@ -872,7 +877,7 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf
 	output_length = gst_buffer_get_size(outbuf) / element->unitsize;
 
 	if (gst_buffer_get_size(outbuf) == 0)
-		set_metadata(element, outbuf, 0, FALSE);
+		set_metadata(element, outbuf, 0, element->last_gap_state);
 	else {
 
 		if (element->width == 32) {
diff --git a/gstlal-ugly/gst/lal/gstlal_interpolator.h b/gstlal-ugly/gst/lal/gstlal_interpolator.h
index e408d47561242d642e74bc4ab67b385812f293f3..87449821ea2562246feddfe4a60ba9d3e832ae7b 100644
--- a/gstlal-ugly/gst/lal/gstlal_interpolator.h
+++ b/gstlal-ugly/gst/lal/gstlal_interpolator.h
@@ -87,6 +87,7 @@ struct _GSTLALInterpolator {
 	GstClockTime next_output_timestamp;
 	gboolean need_discont;
 	gboolean need_pretend;
+	gboolean last_gap_state;
 
 	/* Variables to control the size of transforms */
 	gsize unitsize;