Index: calendar/inc/class.bocalendar.inc.php
===================================================================
--- calendar/inc/class.bocalendar.inc.php	(révision 21060)
+++ calendar/inc/class.bocalendar.inc.php	(copie de travail)
@@ -678,6 +678,7 @@
 			$l_cal = (@isset($params['cal']) && $params['cal']?$params['cal']:$_POST['cal']);
 			$l_participants = (@$params['participants']?$params['participants']:$_POST['participants']);
 			$l_categories = (@$params['categories']?$params['categories']:$_POST['categories']);
+			$l_oldstart = (@isset($params['oldstart']) && $params['oldstart']?$params['oldstart']:$_POST['oldstart']);
 			$l_start = (@isset($params['start']) && $params['start']?$params['start']:$_POST['start']);
 			$l_end = (@isset($params['end']) && $params['end']?$params['end']:$_POST['end']);
 			$l_recur_enddate = (@isset($params['recur_enddate']) && $params['recur_enddate']?$params['recur_enddate']:$_POST['recur_enddate']);
@@ -746,6 +747,15 @@
 				{
 					$this->so->set_category(strval($l_categories[0]));
 				}
+				//Caeies : Fix the recurring exception :
+				$offset_rec = $this->maketime($l_start) - $l_oldstart;
+				if($offset_rec && is_array($l_recur_exception))
+				{
+					for($i = 0; $i < count($l_recur_exception); ++$i)
+					{
+						$l_recur_exception[$i] += $offset_rec;
+					}
+				}
 				$this->so->set_title($l_cal['title']);
 				$this->so->set_description($l_cal['description']);
 				$this->so->set_start($l_start['year'],$l_start['month'],$l_start['mday'],$l_start['hour'],$l_start['min'],0);
@@ -908,7 +918,7 @@
 					);
 				}
 
-				$event[recur_exception] = $l_recur_exception;
+				$event['recur_exception'] = $l_recur_exception;
 
 				$this->store_to_appsession($event);
 				$datetime_check = $this->validate_update($event);
Index: calendar/inc/class.uicalendar.inc.php
===================================================================
--- calendar/inc/class.uicalendar.inc.php	(révision 21060)
+++ calendar/inc/class.uicalendar.inc.php	(copie de travail)
@@ -3568,9 +3568,9 @@
 			$p->set_block('edit','hr','hr');
 
 // Recurrence Exeptions
-			if ($event[recur_exception]>0)
+			if (count($event['recur_exception'])>0)
 			{
-				$recur_exception = implode (",", $event[recur_exception]);
+				$recur_exception = implode (",", $event['recur_exception']);
 			}
 	
 			$vars = Array(
@@ -3582,6 +3582,7 @@
 										. '<input type="hidden" name="cal[owner]" value="'.$event['owner'].'">'."\n"
 										. '<input type="hidden" name="cal[uid]" value="'.$event['uid'].'">'."\n"
 										. '<input type="hidden" name="recur_exception" value="'.$recur_exception.'">'."\n"
+										. '<input type="hidden" name="oldstart" value="'.$this->bo->maketime($event['start']).'">'."\n"
 										. ($_GET['cal_id'] && $event['id'] == 0?'<input type="hidden" name="cal[reference]" value="'.$_GET['cal_id'].'">'."\n":
 										  (@isset($event['reference'])?'<input type="hidden" name="cal[reference]" value="'.$event['reference'].'">'."\n":''))
 										. (@isset($GLOBALS['phpgw_info']['server']['deny_user_grants_access']) && $GLOBALS['phpgw_info']['server']['deny_user_grants_access']?
