diff --git a/field_collection.module b/field_collection.module
index 645093a..2869236 100644
--- a/field_collection.module
+++ b/field_collection.module
@@ -1053,6 +1053,7 @@ function field_collection_item_is_empty(FieldCollectionItemEntity $item) {
         foreach ($item->{$field_name}[$langcode] as $field_item) {
           if (!module_invoke($field['module'], 'field_is_empty', $field_item, $field)) {
             $is_empty = FALSE;
+            break 3;
           }
         }
       }
@@ -1645,6 +1646,19 @@ function field_collection_field_widget_render_required($element) {
 }
 
 /**
+* Validation of an empty depth field values.
+*/
+function field_collection_element_array_value_validate($element) {
+ if ($is_array = is_array($element)) {
+   foreach ($element as &$child) {
+     $child = field_collection_element_array_value_validate($child);
+   }
+ }
+  // Strip empty elements.
+ return $is_array ? array_filter($element) : $element;
+}
+
+/**
  * FAPI validation of an individual field collection element.
  */
 function field_collection_field_widget_embed_validate($element, &$form_state, $complete_form) {
@@ -1667,9 +1681,13 @@ function field_collection_field_widget_embed_validate($element, &$form_state, $c
       // Copied from _form_validate().
       if (isset($elements['#needs_validation'])) {
         $is_empty_multiple = (!count($elements['#value']));
+        if ($is_array = is_array($elements['#value'])) {
+          $array = field_collection_element_array_value_validate($elements['#value']);
+        }
+        $is_array_and_empty = $is_array && empty($array);
         $is_empty_string = (is_string($elements['#value']) && drupal_strlen(trim($elements['#value'])) == 0);
         $is_empty_value = ($elements['#value'] === 0);
-        if ($is_empty_multiple || $is_empty_string || $is_empty_value) {
+        if ($is_empty_multiple || $is_array_and_empty || $is_empty_string || $is_empty_value) {
           if (isset($elements['#title'])) {
             form_error($elements, t('!name field is required.', array('!name' => $elements['#title'])));
           }
