diff --git a/includes/votingapi.usermerge.inc b/includes/votingapi.usermerge.inc
new file mode 100644
index 0000000..21a3d7c
--- /dev/null
+++ b/includes/votingapi.usermerge.inc
@@ -0,0 +1,116 @@
+<?php
+/**
+ * @file
+ * Adds support for VotingAPI.
+ * Supplemental include loaded via usermerge_load_includes().
+ */
+
+/**
+ * Implements hook_usermerge_actions_supported() on behalf of votingapi.
+ */
+function votingapi_usermerge_actions_supported() {
+  return array(
+    'votingapi' => t('Choosing to keep or merge ownership of ratings done via the votingapi module.')
+  );
+}
+
+/**
+ * Implements hook_usermerge_account_properties() on behalf of votingapi.
+ */
+function votingapi_usermerge_account_properties($user_to_delete, $user_to_keep) {
+  $account_properties['votingapi'] = array(
+    'title' => t('Votingapi'),
+    'items' => array(
+      'votingapi' => array(
+        'name' => 'votingapi',
+        'criterion' => 'merge'
+      )
+    )
+  );
+
+  return $account_properties;
+}
+
+/**
+ * Implements hook_usermerge_build_review_form_elements() on behalf of votingapi.
+ */
+function votingapi_usermerge_build_review_form_elements($review, $account_properties, $user_to_delete, $user_to_keep) {
+  $votes_owned_by_user_to_delete = _usermerge_votingapi_get_owned_votes($user_to_delete->uid);
+  $votes_owned_by_user_to_keep = _usermerge_votingapi_get_owned_votes($user_to_keep->uid);
+
+  $properties = $account_properties['votingapi'];
+
+  $review['votingapi'] = array(
+    '#tree' => TRUE,
+    '#theme' => 'usermerge_data_review_form_table',
+    '#title' => $properties['title'],
+    'votingapi' => array(
+      'property_name' => array(
+        '#type' => 'markup',
+        '#markup' => t('Votingapi'),
+      ),
+      'options' => array(
+        '#type' => 'radios',
+        '#options' => array(
+          'user_to_delete' => $votes_owned_by_user_to_delete,
+          'user_to_keep' => $votes_owned_by_user_to_keep,
+          'merge' => 'merge'
+        ),
+        '#default_value' => 'merge'
+      )
+    ),
+  );
+
+  if ( isset($properties['description']) ) {
+    $review['votingapi']['#description'] = $properties['description'];
+  }
+
+  return $review;
+}
+
+/**
+ * Implements hook_usermerge_merge_accounts() on behalf of votingapi.
+ */
+function votingapi_usermerge_merge_accounts($user_to_delete, $user_to_keep, $review) {
+  $votes_to_keep = $review['votingapi']['votingapi']['options'];
+
+  if ( $votes_to_keep == 'merge' ) {
+    $query = db_update('votingapi_vote')
+      ->fields(array(
+        'uid' => $user_to_keep->uid
+      ))
+      ->condition('uid', $user_to_delete->uid)
+      ->execute();
+    // Any updating of votingapi_cache should happen here, but it seems unnecessary.
+  }
+  else {
+    // Figures out which users votes will be deleted.
+    $votes_to_delete = $votes_to_keep == 'user_to_keep' ? 'user_to_delete' : 'user_to_keep';
+
+    // Get the entity types and entity ids of the affected content, so that
+    // the votingapi_cache derived totals can be recalculated below.
+    $select_results = db_select('votingapi_vote', 'v')
+      ->fields('v', array('entity_type', 'entity_id'))
+      ->condition('uid', $$points_to_delete->uid)
+      ->execute();
+
+    $query_delete = db_delete('votingapi_vote')
+      ->condition('uid', $$points_to_delete->uid)
+      ->execute();
+    
+    // Updated the vote totals on the content affected by the deleted votes.
+    foreach( $select_results AS $row) {
+      // The 'TRUE' is to force recalculation, as it is not clear cron will
+      // pick up these changes.
+      votingapi_recalculate_results($row->entity_type, $row->entity_id, TRUE);
+    }
+  }
+}
+
+/**
+ * Retrieve the count of the votes owned by a user.
+ */
+function _usermerge_votingapi_get_owned_votes($uid) {
+  $ratings = db_query_range("SELECT COUNT(uid) FROM {votingapi_vote} WHERE value > 0 AND uid=:uid", 0, 1, array(':uid' => $uid))->fetchField();
+  return $ratings;
+}
