diff --git a/field_collection.module b/field_collection.module
index 4108c3e..9c4ffe2 100644
--- a/field_collection.module
+++ b/field_collection.module
@@ -594,6 +594,23 @@ function field_collection_item_is_empty(FieldCollectionItemEntity $item) {
     // Determine the list of languages to iterate on.
     $languages = field_available_languages('field_collection_item', $field);
 
+    // Boolean fields as those are always considered non-empty, thus their
+    // information is not useful only if not set to TRUE.
+    if (!$all_boolean && $field['type'] == 'list_boolean') {
+      foreach ($languages as $langcode) {
+        if (!empty($item->{$field_name}[$langcode])) {
+          foreach ($item->{$field_name}[$langcode] as $field_item) {
+            if ($field_item['value']) {
+              $is_empty = FALSE;
+              break 3;
+            }
+          }
+        }
+      }
+
+      continue;
+    }
+
     foreach ($languages as $langcode) {
       if (!empty($item->{$field_name}[$langcode])) {
         // If at least one collection-field is not empty; the
@@ -601,6 +618,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;
           }
         }
       }
