diff --git a/modules/commons/commons_events/commons_events.module b/modules/commons/commons_events/commons_events.module
index 3bf1d19dbcc7bb2921ee29b187b63add3403859e..5d18f66c0c5db97de240ab277d8517c690de681d 100644
--- a/modules/commons/commons_events/commons_events.module
+++ b/modules/commons/commons_events/commons_events.module
@@ -637,13 +637,17 @@ function commons_events_event_type_disabled($node) {
  * Helper function go get the raw number of attendees.
  */
 function commons_events_get_raw_attendee_count($node) {
-  $attendee_count = db_select('registration', 'r')
-    ->fields('r')
+  $attendee_count = 0;
+  $query = db_select('registration', 'r')
+    ->fields('r', array('count'))
     ->condition('entity_id', $node->nid)
     ->condition('entity_type', 'node')
-    ->countQuery()
-    ->execute()
-    ->fetchField();
+    ->execute();
+
+  // Add up all of the attendees going to the event.
+  foreach ($query as $record) {
+    $attendee_count += $record->count;
+  }
 
   return $attendee_count;
 }
\ No newline at end of file
diff --git a/modules/commons/commons_events/includes/commons_events.forms.inc b/modules/commons/commons_events/includes/commons_events.forms.inc
index d7004b77e6d61bdf564443e0c3acde6ec619a7cc..670ed522aa55195a98b949d5d13de11f1143b4fd 100644
--- a/modules/commons/commons_events/includes/commons_events.forms.inc
+++ b/modules/commons/commons_events/includes/commons_events.forms.inc
@@ -22,6 +22,13 @@ function commons_events_attend_event_form($form, &$form_state, $event_node, $reg
     ));
   }
   $form_state['registration'] = $registration;
+  $form['count'] = array(
+    '#type' => 'textfield',
+    '#default_value' => '',
+    '#size' => 2,
+    '#maxlength' => 2,
+    '#required' => false,
+  );
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Attend'),
@@ -47,12 +54,26 @@ function commons_events_attend_event_form($form, &$form_state, $event_node, $reg
  */
 function commons_events_attend_event_form_validate($form, &$form_state) {
   global $user;
+  if ($form_state['values']['count'] == '') {
+    $form_state['values']['count'] = 0;
+  }
+
+  if (!is_numeric($form_state['values']['count'])) {
+    form_set_error('count', t('Guest count must be a number.'));
+    return FALSE;
+  }
+  // Include the registrant in the count.
+  $form_state['values']['count']++;
+
+  if (!registration_has_room('node', $form_state['event_node']->nid, $form_state['values']['count'])) {
+    form_set_error('count', t('Insufficient spaces remaining.'));
+  }
   if (!registration_status('node', $form_state['event_node']->nid, TRUE)
     || !registration_has_room('node', $form_state['event_node']->nid)) {
     form_set_error('submit', t('The event you are registering for is unavailable.'));
     return FALSE;
   }
-  else if (registration_is_registered($form_state['registration'], NULL, $user->uid)) {
+  elseif (registration_is_registered($form_state['registration'], NULL, $user->uid)) {
     form_set_error('submit', t('You are already registered for this event.'));
     return FALSE;
   }
@@ -68,7 +89,7 @@ function commons_events_attend_event_form_submit($form, $form_state) {
   $registration->user_uid = $user->uid;
   $registration->author_uid = $user->uid;
   $registration->state = NULL;
-  $registration->count = 1;
+  $registration->count = $form_state['values']['count'];
   if (registration_save($registration)) {
     drupal_set_message(t('Your registration was saved.'));
     commons_follow_node_follow_node($registration->entity_id, 'event', $user->uid);
@@ -81,23 +102,43 @@ function commons_events_attend_event_form_submit($form, $form_state) {
 /**
  * Form to cancel a registration for an event.
  */
-function commons_events_cancel_event_form($form, &$form_state, $event) {
+function commons_events_cancel_event_form($form, &$form_state, $event, $registrations) {
   $form_state['event'] = $event;
+
   $form['#attributes'] = array('class' => array('commons-events-form-float'));
   $form['#attached']['css'] = array(
     drupal_get_path('module', 'commons_events') . '/css/commons_events.css',
   );
+  $form['registration'] = array(
+    '#type' => 'value',
+    '#value' => $registrations,
+  );
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Cancel'),
   );
   $form['submit']['#attributes']['class'][] = 'commons-events-button';
+
+  $attendee_count = 0;
+  foreach ($registrations as $registration) {
+    $attendee_count += registration_event_count('node', $event->nid, $registration->registration_id);
+  }
+  // Remove registrant from count.
+  $attendee_count--;
+  if ($attendee_count > 1) {
+    // Single attending message.
+    $markup = t('You are attending with @guests', array('@guests' => format_plural($attendee_count, '1 guest', '@count guests')));
+  }
+  else {
+    $markup = t('You are attending.');
+  }
+
   $form['attending'] = array(
     '#theme_wrappers' => array('container'),
     '#attributes' => array(
       'class' => array('commons-event-status'),
     ),
-    '#markup' => t('You are attending.'),
+    '#markup' => $markup,
   );
   return $form;
 }
@@ -106,16 +147,9 @@ function commons_events_cancel_event_form($form, &$form_state, $event) {
  * Event cancel attendance form submit handler.
  */
 function commons_events_cancel_event_form_submit($form, $form_state) {
-  global $user;
   $event = $form_state['event'];
-  $query = new EntityFieldQuery();
-  $query->entityCondition('entity_type', 'registration')
-    ->propertyCondition('user_uid', $user->uid)
-    ->propertyCondition('entity_id', $event->nid)
-    ->propertyCondition('entity_type', 'node');
-  $result = $query->execute();
-  if (isset($result['registration'])) {
-    registration_delete_multiple(array_keys($result['registration']));
+  if (isset($form_state['values']['registration'])) {
+    registration_delete_multiple(array_keys($form_state['values']['registration']));
     drupal_set_message(t('Your registration has been cancelled.'));
   }
 }
diff --git a/modules/commons/commons_events/includes/commons_events.theme.inc b/modules/commons/commons_events/includes/commons_events.theme.inc
index 22a52b853c9dbab3d1525a867b9626722bb94373..95858f6c471c02805e4071dfb86dde1da0c1b9af 100644
--- a/modules/commons/commons_events/includes/commons_events.theme.inc
+++ b/modules/commons/commons_events/includes/commons_events.theme.inc
@@ -29,9 +29,16 @@ function theme_commons_events_attending_event($variables = array()) {
     && registration_status('node', $event->nid, TRUE)) {
     return drupal_get_form('commons_events_attend_event_form_' . $event->nid, $event, $registration, $attendee_count);
   }
-  else if (registration_is_registered($registration, NULL, $user->uid) &&
+  elseif (registration_is_registered($registration, NULL, $user->uid) &&
     registration_access('delete', $registration, $user, $registration->type)) {
-    return drupal_get_form('commons_events_cancel_event_form_' . $event->nid, $event);
+    $query = new EntityFieldQuery();
+    $query->entityCondition('entity_type', 'registration')
+      ->propertyCondition('user_uid', $user->uid)
+      ->propertyCondition('entity_id', $event->nid)
+      ->propertyCondition('entity_type', 'node');
+    $result = $query->execute();
+
+    return drupal_get_form('commons_events_cancel_event_form_' . $event->nid, $event, $result['registration']);
   }
   return "";
 }
