diff --git a/mappers/date.inc b/mappers/date.inc
index 6cc5bca..c4e19e1 100644
--- a/mappers/date.inc
+++ b/mappers/date.inc
@@ -43,21 +43,31 @@ function date_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam
  *   The value to be mapped. Should be either a (flexible) date string
  *   or a FeedsDateTimeElement object.
  *
- * @todo Support array of values for dates.
  */
 function date_feeds_set_target($source, $entity, $target, $feed_element) {
   list($field_name, $sub_field) = explode(':', $target, 2);
   if (!($feed_element instanceof FeedsDateTimeElement)) {
     if (is_array($feed_element)) {
-      $feed_element = $feed_element[0];
-    }
-    if ($sub_field == 'end') {
-      $feed_element = new FeedsDateTimeElement(NULL, $feed_element);
-    }
-    else {
-      $feed_element = new FeedsDateTimeElement($feed_element, NULL);
+      $i = 0;
+        foreach ($feed_element as $f) {
+          if ($sub_field == 'end') {
+            $array_element = new FeedsDateTimeElement(NULL, $f);
+          }
+          else {
+            $array_element = new FeedsDateTimeElement($f, NULL);
+          }
+          $array_element->buildDateField($entity, $field_name, $i);
+          $i++;
+        }
+      }
+      else {
+      if ($sub_field == 'end') {
+        $feed_element = new FeedsDateTimeElement(NULL, $feed_element);
+      }
+      else {
+        $feed_element = new FeedsDateTimeElement($feed_element, NULL);
+      }
+    $feed_element->buildDateField($entity, $field_name);
     }
   }
-  $feed_element->buildDateField($entity, $field_name);
-
 }
diff --git a/plugins/FeedsParser.inc b/plugins/FeedsParser.inc
index aa1dfff..cfbe466 100644
--- a/plugins/FeedsParser.inc
+++ b/plugins/FeedsParser.inc
@@ -407,13 +407,13 @@ class FeedsDateTimeElement extends FeedsElement {
    * Helper method for buildDateField(). Build a FeedsDateTimeElement object
    * from a standard formatted node.
    */
-  protected static function readDateField($entity, $field_name) {
+  protected static function readDateField($entity, $field_name, $fieldnumber = 0) {
     $ret = new FeedsDateTimeElement();
-    if (isset($entity->{$field_name}['und'][0]['date']) && $entity->{$field_name}['und'][0]['date'] instanceof FeedsDateTime) {
-      $ret->start = $entity->{$field_name}['und'][0]['date'];
+    if (isset($entity->{$field_name}['und'][$fieldnumber]['date']) && $entity->{$field_name}['und'][$fieldnumber]['date'] instanceof FeedsDateTime) {
+      $ret->start = $entity->{$field_name}['und'][$fieldnumber]['date'];
     }
-    if (isset($entity->{$field_name}['und'][0]['date2']) && $entity->{$field_name}['und'][0]['date2'] instanceof FeedsDateTime) {
-      $ret->end = $entity->{$field_name}['und'][0]['date2'];
+    if (isset($entity->{$field_name}['und'][$fieldnumber]['date2']) && $entity->{$field_name}['und'][$fieldnumber]['date2'] instanceof FeedsDateTime) {
+      $ret->end = $entity->{$field_name}['und'][$fieldnumber]['date2'];
     }
     return $ret;
   }
@@ -426,10 +426,10 @@ class FeedsDateTimeElement extends FeedsElement {
    * @param $field_name
    *   The name of the field to build.
    */
-  public function buildDateField($entity, $field_name) {
+  public function buildDateField($entity, $field_name, $fieldnumber = 0) {
     $info = field_info_field($field_name);
 
-    $oldfield = FeedsDateTimeElement::readDateField($entity, $field_name);
+    $oldfield = FeedsDateTimeElement::readDateField($entity, $field_name, $fieldnumber);
     // Merge with any preexisting objects on the field; we take precedence.
     $oldfield = $this->merge($oldfield);
     $use_start = $oldfield->start;
@@ -465,24 +465,24 @@ class FeedsDateTimeElement extends FeedsElement {
       $entity->{$field_name} = array('und' => array());
     }
     if ($use_start) {
-      $entity->{$field_name}['und'][0]['timezone'] = $use_start->getTimezone()->getName();
-      $entity->{$field_name}['und'][0]['offset'] = $use_start->getOffset();
+      $entity->{$field_name}['und'][$fieldnumber]['timezone'] = $use_start->getTimezone()->getName();
+      $entity->{$field_name}['und'][$fieldnumber]['offset'] = $use_start->getOffset();
       $use_start->setTimezone($db_tz);
-      $entity->{$field_name}['und'][0]['date'] = $use_start;
+      $entity->{$field_name}['und'][$fieldnumber]['date'] = $use_start;
       /**
        * @todo the date_type_format line could be simplified based upon a patch
        *   DO issue #259308 could affect this, follow up on at some point.
        *   Without this, all granularity info is lost.
        *   $use_start->format(date_type_format($field['type'], $use_start->granularity));
        */
-      $entity->{$field_name}['und'][0]['value'] = $use_start->format(date_type_format($info['type']));
+      $entity->{$field_name}['und'][$fieldnumber]['value'] = $use_start->format(date_type_format($info['type']));
     }
     if ($use_end) {
       // Don't ever use end to set timezone (for now)
-      $entity->{$field_name}['und'][0]['offset2'] = $use_end->getOffset();
+      $entity->{$field_name}['und'][$fieldnumber]['offset2'] = $use_end->getOffset();
       $use_end->setTimezone($db_tz);
-      $entity->{$field_name}['und'][0]['date2'] = $use_end;
-      $entity->{$field_name}['und'][0]['value2'] = $use_end->format(date_type_format($info['type']));
+      $entity->{$field_name}['und'][$fieldnumber]['date2'] = $use_end;
+      $entity->{$field_name}['und'][$fieldnumber]['value2'] = $use_end->format(date_type_format($info['type']));
     }
   }
 }
