Index: date_repeat_sequence/date_repeat_sequence.node.inc
===================================================================
--- date_repeat_sequence/date_repeat_sequence.node.inc	(revision 6000)
+++ date_repeat_sequence/date_repeat_sequence.node.inc	(working copy)
@@ -110,26 +110,23 @@
     //In the case where the user changed the time or end of an event in a non-parent node then we need to regenerate the
     //Parent nodes dates and and times and put those into the values.
     $parent_node = node_load($pnid);
-    $diff = 0;
     $val_date = array_shift($values);
     $rrule = $val_date['rrule'];
     $val_start = date_make_date($val_date['value'], $val_date['timezone'], $field_info['type']);
 
-    if (!empty($val_date['value2'])) {
-      $val_end = date_make_date($val_date['value2'], $val_date['timezone'], $field_info['type']);
-      $diff = date_difference($val_start, $val_end);
-    }
-
     $val_start = date_array($val_start);
     $parent_value = array_shift($parent_node->$field);
     $parent_start = date_array(date_make_date($parent_value['value'], $parent_value['timezone'], $field_info['type']));
     $parent_start['second'] = $val_start['second'];
     $parent_start['minute'] = $val_start['second'];
     $parent_start['hour'] = $val_start['hour'];
-    $parent_end = $parent_start;
 
-    if($diff) {
-      $parent_end['second'] = $parent_end['second'] + $diff;
+    $parent_end = $parent_start;
+    if (!empty($val_date['value2'])) {
+      $val_end = date_array(date_make_date($val_date['value2'], $val_date['timezone'], $field_info['type']));
+      $parent_end['second'] = $val_end['second'];
+      $parent_end['minute'] = $val_end['minute'];
+      $parent_end['hour'] = $val_end['hour'];
     }
 
     $parent_value['value'] = date_format_date(date_make_date($parent_start, $parent_value['timezone'], DATE_ARRAY), 'custom', date_type_format($field_info['type']));
