diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c
index af9b17c..8bfa298 100644
--- a/gst/gstpipeline.c
+++ b/gst/gstpipeline.c
@@ -407,7 +407,11 @@ gst_pipeline_change_state (GstElement * element, GstStateChange transition)
           gst_object_unref (clock);
 
         if (start_time != GST_CLOCK_TIME_NONE && now != GST_CLOCK_TIME_NONE) {
-          new_base_time = now - start_time + delay;
+          if (start_time > now + delay) {
+            new_base_time = G_GUINT64_CONSTANT (0);
+          } else {
+            new_base_time = now - start_time + delay;
+          }
           GST_DEBUG_OBJECT (element,
               "start_time=%" GST_TIME_FORMAT ", now=%" GST_TIME_FORMAT
               ", base_time %" GST_TIME_FORMAT,

