diff -ur rsvp/rsvp.module rsvp/rsvp.module
--- rsvp/rsvp.module	Sun Nov 30 15:44:10 2008
+++ rsvp/rsvp.module	Thu Dec 11 10:53:16 2008
@@ -257,7 +257,7 @@
     $node = node_load($nid);
     drupal_set_title($node->title);
     if (user_access('administer rsvp') || user_access('rsvp on events') || (user_access('rsvp on own events') && $node->uid == $user->uid)) {
-      if ($node->event_end >= time()) {
+      if (strtotime($node->event['end']) >= time()) {
         $content = l(t('Create RSVP'), 'node/'. $nid .'/rsvp/create');
       }
       else {
@@ -379,7 +379,7 @@
   foreach ($list as $nid => $links) {
     $node = node_load($nid);
     if ($node->nid) {
-      $content .= theme('item_list', $links, t('For: ') . l($node->title, 'node/'. $node->nid, array('title' => t('View this event'))) .' - '. format_date($node->event_start, 'small', '', $node->start_offset));
+      $content .= theme('item_list', $links, t('For: ') . l($node->title, 'node/'. $node->nid, array('title' => t('View this event'))) .' - '. format_date(strtotime($node->event['start']), 'small', '', $node->start_offset));
     }
     else {
       // node has been deleted
@@ -425,7 +425,7 @@
     // show the invitation
     $content .= rsvp_view($rsvp->rid);
     // check if the event has expired
-    if (time() >= $node->event_end) {
+    if (time() >= strtotime($node->event['end'])) {
       drupal_set_message(t('You can no longer respond to this invitation since the event has expired.'));
     }
     else {
@@ -924,6 +924,38 @@
 
   drupal_set_message('Your response was saved.', 'status');
   db_query('UPDATE {rsvp_invite} SET response = \'%s\', invited = 1, received = 1 WHERE hash = \'%s\'', $edit['invite_reply'], $edit['hash']);
+
+  // Signup module integration; if a valid user (real or anonymous),
+  // is confirming his/her attendance, and has not already signed up
+  // for this event, sign him/her up for it.
+  if ($edit['invite_reply'] == 'yes' && module_exists('signup')) {
+    $rsvp = _rsvp_get_invite($edit['hash']);
+    if ($rsvp->uid) {
+
+      // Sign up the registered user.
+      include_once('./'. drupal_get_path('module', 'signup') . '/includes/views.none.inc');
+      $signups = signup_list_user_signups($rsvp->uid);
+      if (!in_array($rsvp->nid, array_keys($signups))) {
+        $edit['uid'] = $rsvp->uid;
+        $edit['nid'] = $rsvp->nid;
+        $edit['signup_form_data'] = array();
+        signup_sign_up_user($edit);
+      }
+    }
+    else {
+        // Sign up the unregistered user.
+      if (signup_validate_anon_email($rsvp->nid, $rsvp->email)) {
+        $signup_form = array(
+          'nid' => $rsvp->nid,
+          'uid' => NULL,
+          'signup_anon_mail' => $rsvp->email,
+          'signup_form_data' => array(),
+        );
+        signup_sign_up_user($signup_form);
+      }
+    }
+  }
+ 
   if ($user->uid > 0) {
     drupal_goto('user/'. $user->uid .'/rsvp');
   }
diff -ur rsvp/rsvp.theme rsvp/rsvp.theme
--- rsvp/rsvp.theme	Thu Jul  3 11:38:24 2008
+++ rsvp/rsvp.theme	Mon Dec  8 19:25:55 2008
@@ -26,7 +26,7 @@
 
 function theme_rsvp_event($node) {
   $content .= '<div>For: '. l($node->title, 'node/'. $node->nid);
-  $content .= ' - '. format_date($node->event_start, 'small', '', $node->start_offset) .'</div>';;
+  $content .= ' - '. format_date($node->event['start'], 'small', '', $node->start_offset) .'</div>';;
   return $content;
 }
 
