diff --git a/includes/field_mapping.inc b/includes/field_mapping.inc
index 403d0f4..ee0cda6 100644
--- a/includes/field_mapping.inc
+++ b/includes/field_mapping.inc
@@ -176,6 +176,16 @@ class MigrateFieldMapping {
     return $this;
   }
 
+  /**
+   * Set callbacks to the field that will process its value.
+   *
+   * @param $callbacks
+   *  An array of callables that implement
+   *  callback_migrate_field_mapping_process().
+   *
+   * @return
+   *  The current MigrateFieldMapping object, for chaining.
+   */
   public function callbacks($callbacks) {
     $this->callbacks = func_get_args();
     return $this;
diff --git a/includes/migration.inc b/includes/migration.inc
index 4be8229..9796b61 100644
--- a/includes/migration.inc
+++ b/includes/migration.inc
@@ -1239,7 +1239,7 @@ abstract class Migration extends MigrationBase {
         $callbacks = $mapping->getCallbacks();
         foreach ($callbacks as $callback) {
           if (isset($destination_values)) {
-            $destination_values = call_user_func($callback, $destination_values);
+            $destination_values = call_user_func($callback, $destination_values, $this->sourceValues);
           }
         }
 
diff --git a/migrate.api.php b/migrate.api.php
index 8b4190f..70ec9bd 100644
--- a/migrate.api.php
+++ b/migrate.api.php
@@ -104,3 +104,20 @@ function hook_migrate_overview() {
     migration will behave when incrementally migrated are provided.</p>
     <p><a href="http://issuetracker.example.com/?project=migration&status=open">Open migration tickets</a></p>');
 }
+
+/**
+ * Process a field value before it's applied to the destination object.
+ *
+ * @param $value
+ *   The source value of the field.
+ * @param $row
+ *   The source row object.
+ *
+ * @return
+ *   The modified value to use on the destination object.
+ *
+ * @see MigrateFieldMapping::callbacks()
+ */
+function callback_migrate_field__mapping_process($value, $row) {
+  return t('review: !title', array('!title' => $value));
+}
