diff --git a/gstlal-ugly/gst/lal/gstlal_latency.c b/gstlal-ugly/gst/lal/gstlal_latency.c
index 49eaba0e0bc5c386733ea17131519708493de0e4..c8ce33b6b81da49d5308ed8e407ffe068255cd97 100644
--- a/gstlal-ugly/gst/lal/gstlal_latency.c
+++ b/gstlal-ugly/gst/lal/gstlal_latency.c
@@ -95,6 +95,30 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE(
 );
 
 
+/*
+ * ============================================================================
+ *
+ *				Utilities
+ *
+ * ============================================================================
+ */
+
+
+/* Need to define "property" before the GObject Methods section since it gets used earlier */
+enum property {
+	ARG_SILENT = 1,
+	ARG_CURRENT_LATENCY,
+	ARG_FAKE
+};
+
+static GParamSpec *properties[ARG_FAKE];
+
+#define DEFAULT_SILENT FALSE
+
+static void lal_latency_dummy_function(GObject *object) {
+	return;
+}
+
 
 /*
  * ============================================================================
@@ -128,14 +152,19 @@ static GstFlowReturn transform_ip(GstBaseTransform *trans, GstBuffer *buf)
 	gdouble current_time = current_s + current_us;
 	gdouble buffer_time = (double) GST_TIME_AS_SECONDS(GST_BUFFER_PTS(buf));
 	
-	gdouble latency = current_time - buffer_time;
-	 
+	element->current_latency = current_time - buffer_time;
+
+	/* Tell the world about the latency by updating the latency property */
+	GST_LOG_OBJECT(element, "Just computed new latency");
+	g_object_notify_by_pspec(G_OBJECT(element), properties[ARG_CURRENT_LATENCY]);
+
+	/* And write to file if we want */
 	if (!silent) {
 		FILE *out_file;
 		out_file = fopen("latency_output.txt", "a");
 
 		fprintf(out_file, "current time = %9.3f, buffer time = %9d, latency = %6.3f, %s\n",
-			current_time, (int) buffer_time, latency, GST_OBJECT_NAME(element));
+			current_time, (int) buffer_time, element->current_latency, GST_OBJECT_NAME(element));
 
 		fclose(out_file);
 	}
@@ -156,13 +185,6 @@ static GstFlowReturn transform_ip(GstBaseTransform *trans, GstBuffer *buf)
  */
 
 
-enum property {
-	ARG_SILENT = 1
-};
-
-#define DEFAULT_SILENT FALSE
-
-
 /*
  * set_property()
  */
@@ -180,6 +202,10 @@ static void set_property(GObject *object, enum property prop_id, const GValue *v
 		element->silent = g_value_get_boolean(value);
 		break;
 
+	case ARG_CURRENT_LATENCY:
+		element->current_latency = g_value_get_double(value);
+		break;
+
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 		break;
@@ -206,6 +232,10 @@ static void get_property(GObject *object, enum property prop_id, GValue *value,
 		g_value_set_boolean(value, element->silent);
 		break;
 
+	case ARG_CURRENT_LATENCY:
+		g_value_set_double(value, element->current_latency);
+		break;
+
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
 		break;
@@ -237,16 +267,30 @@ static void gstlal_latency_class_init(GSTLALLatencyClass *klass)
 	gobject_class->set_property = GST_DEBUG_FUNCPTR(set_property);
 	gobject_class->get_property = GST_DEBUG_FUNCPTR(get_property);
 
+	properties[ARG_SILENT] = g_param_spec_boolean(
+		"silent",
+		"Silent",
+		"Do not print output to stdout.",
+		DEFAULT_SILENT,
+		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT
+	);
+	properties[ARG_CURRENT_LATENCY] = g_param_spec_double(
+		"current-latency",
+		"Current Latency",
+		"The current measured value of the latency",
+		-G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+		G_PARAM_READABLE | G_PARAM_STATIC_STRINGS
+	);
+
 	g_object_class_install_property(
 		gobject_class,
 		ARG_SILENT,
-		g_param_spec_boolean(
-			"silent",
-			"Silent",
-			"Do not print output to stdout.",
-			DEFAULT_SILENT,
-			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT
-		)
+		properties[ARG_SILENT]
+	);
+	g_object_class_install_property(
+		gobject_class,
+		ARG_CURRENT_LATENCY,
+		properties[ARG_CURRENT_LATENCY]
 	);
 
 	gst_element_class_add_pad_template(element_class, gst_static_pad_template_get(&src_factory));
@@ -263,6 +307,7 @@ static void gstlal_latency_class_init(GSTLALLatencyClass *klass)
 
 static void gstlal_latency_init(GSTLALLatency *element)
 {
+	g_signal_connect(G_OBJECT(element), "notify::current-latency", G_CALLBACK(lal_latency_dummy_function), NULL);
 	gst_base_transform_set_passthrough(GST_BASE_TRANSFORM(element), TRUE);
 	gst_base_transform_set_gap_aware(GST_BASE_TRANSFORM(element), TRUE);
 
diff --git a/gstlal-ugly/gst/lal/gstlal_latency.h b/gstlal-ugly/gst/lal/gstlal_latency.h
index 924b6a4b90ceaee3a3bfa4eb5600307a317c4e87..05988c1a0e3e50ef137031711ca0b5af23e5915d 100644
--- a/gstlal-ugly/gst/lal/gstlal_latency.h
+++ b/gstlal-ugly/gst/lal/gstlal_latency.h
@@ -78,6 +78,7 @@ struct _GSTLALLatency {
 
 	/* properties */
 	gboolean silent;
+	gdouble current_latency;
 };