diff --git a/plugins/destinations/fields.inc b/plugins/destinations/fields.inc
index eaf458a..e01303e 100644
--- a/plugins/destinations/fields.inc
+++ b/plugins/destinations/fields.inc
@@ -496,13 +496,26 @@ abstract class MigrateFileFieldBaseHandler extends MigrateFieldHandler {
     // Note that what $value represents depends on the file class -
     // MigrateFileUri expects a filespec/URI, MigrateFileFid expects a file ID,
     // etc.
-    foreach ($values as $value) {
+    foreach ($values as $key => $value) {
       if ($value) {
+        // Prepare arguments for possible multi values.
+        $this_arguments = array();
+        foreach ($arguments as $arg_key => $arg_val) {
+          // For a non array argument, we simply pass it.
+          if (!is_array($arg_val)) {
+            $this_arguments[$arg_key] = $arg_val;
+          }
+          // For array, we assume the n-th value is intended for the given value.
+          elseif (isset($arg_val[$key])) {
+            $this_arguments[$arg_key] = $arg_val[$key];
+          }
+        }
+
         // If the parent entity doesn't have an explicit uid, give ownership
         // to the anonymous account
         $owner = isset($entity->uid) ? $entity->uid : 0;
         // Call the MigrateFileInterface implementation to do the real work
-        $source = new $file_class($arguments);
+        $source = new $file_class($this_arguments);
         $file = $source->processFile($value, $owner);
 
         // Assuming we got back a valid file ID, build the proper field
@@ -510,7 +523,7 @@ abstract class MigrateFileFieldBaseHandler extends MigrateFieldHandler {
         // MigrateFile class has saved a message indicating why.
         if ($file) {
           $field_array = array('fid' => $file->fid);
-          $return[$language][] = $this->buildFieldArray($field_array, $arguments, $delta);
+          $return[$language][] = $this->buildFieldArray($field_array, $this_arguments, $delta);
         }
       }
       $delta++;
