diff --git a/modules/file/file.field.inc b/modules/file/file.field.inc
index b26d7e4..b2fda70 100644
--- a/modules/file/file.field.inc
+++ b/modules/file/file.field.inc
@@ -500,9 +500,9 @@ function file_field_widget_form(&$form, &$form_state, $field, $instance, $langco
       $elements[$delta]['#weight'] = $delta;
       $delta++;
     }
-    // And then add one more empty row for new uploads except when this is a
-    // programmed form as it is not necessary.
-    if (($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta < $field['cardinality']) && empty($form_state['programmed'])) {
+    // Add either one blank row if the field has unlimited cardinality, or the right number of
+    // blank rows to match the field cardinality as this is what is expected.
+    if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta < $field['cardinality']) {
       $elements[$delta] = $element;
       $elements[$delta]['#default_value'] = $defaults;
       $elements[$delta]['#weight'] = $delta;
