diff --git a/facetapi_bonus.info b/facetapi_bonus.info
index f9ba779..9a51007 100644
--- a/facetapi_bonus.info
+++ b/facetapi_bonus.info
@@ -2,6 +2,7 @@ core = "7.x"
 dependencies[] = "facetapi"
 description = "Additions to facetapi"
 files[] = "plugins/facetapi/dependency_facet.inc"
+files[] = "plugins/facetapi/filter_dependency_helper.inc"
 files[] = "plugins/facetapi/filter_rewrite_items.inc"
 files[] = "plugins/facetapi/filter_exclude_specified_items.inc"
 name = Facet API Bonus
diff --git a/facetapi_bonus.module b/facetapi_bonus.module
index 3df1e21..6076765 100644
--- a/facetapi_bonus.module
+++ b/facetapi_bonus.module
@@ -48,5 +48,84 @@ function facetapi_bonus_facetapi_filters() {
         'class' => 'FacetapiFilterRewriteItems',
       ),
     ),
+    'dependency_helper' => array(
+      'handler' => array(
+        'label' => t('Helper Filter for Another Facet Dependency'),
+        'class' => 'FacetapiFilterDependencyHelper',
+      ),
+    ),
   );
 }
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Alter facetapi filters form and hide helper filter.
+ */
+function facetapi_bonus_form_facetapi_facet_filters_form_alter(&$form, &$form_state, $form_id) {
+  if (isset($form['settings']['filters']['table']['dependency_helper'])) {
+    unset($form['settings']['filters']['table']['dependency_helper']);
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function facetapi_bonus_form_facetapi_facet_dependencies_form_alter(&$form, &$form_state, $form_id) {
+  $form['#submit'][] = 'facetapi_bonus_facet_dependencies_form_submit';
+}
+
+function facetapi_bonus_facet_dependencies_form_submit($form, &$form_state) {
+  // Pulls variables for code readability.
+  $adapter = $form['#facetapi']['adapter'];
+  $realm = $form['#facetapi']['realm'];
+  $settings = $form['#facetapi']['settings'];
+  $defaults = $form['#facetapi']['defaults'];
+  if (!$current_facet = facetapi_facet_load($settings->facet, $adapter->getSearcher())) {
+    return;
+  }
+
+  $values = array_intersect_key($form_state['values'], $defaults);
+
+  // Get current facet settins.
+  $settings = $adapter->getFacet($current_facet)->getSettings($realm);
+  $enable_filter = (isset($values['show_not_narrow']) && $values['show_not_narrow']);
+
+  $filters = facetapi_filters_load($settings->facet, $adapter->getSearcher());
+  $weight = -50;
+  foreach ($filters['plugins'] as $id => $plugin) {
+    if ($class = ctools_plugin_load_class('facetapi', 'filters', $id, 'handler')) {
+      // Gets filter defaults.
+      $filter_plugin = new $class($id, $adapter, $settings);
+      $default = $filter_plugin->getDefaultSettings() + array(
+        'status' => 0,
+        'weight' => $weight++,
+      );
+      // Merges in default settings.
+      if (empty($settings->settings['filters'][$id])) {
+        $settings->settings['filters'][$id] = array();
+      }
+      $settings->settings['filters'][$id] += $default;
+    }
+  }
+
+  // Change the status of 'dependency_helper' filter.
+  if (isset($settings->settings['filters']['dependency_helper']['status'])) {
+    $settings->settings['filters']['dependency_helper']['status'] = $enable_filter;
+
+    // Writes the settings to the database.
+    ctools_export_crud_save('facetapi', $settings);
+  }
+}
+
+/**
+ * Helper function that contains the list of passed dependencies.
+ */
+function _facetapi_bonus_dependencies_passed($facet_name, $value = FALSE) {
+  $dependencies_passed = &drupal_static(__FUNCTION__, array());
+  if ($value) {
+    $dependencies_passed[$facet_name] = $value;
+  }else {
+    return (isset($dependencies_passed[$facet_name])) ? $dependencies_passed[$facet_name] : FALSE;
+  }
+}
\ No newline at end of file
diff --git a/plugins/facetapi/dependency_facet.inc b/plugins/facetapi/dependency_facet.inc
index 80de5fc..17623d9 100644
--- a/plugins/facetapi/dependency_facet.inc
+++ b/plugins/facetapi/dependency_facet.inc
@@ -23,6 +23,7 @@ class FacetapiDependencyFacet extends FacetapiDependency {
    * Executes the dependency check.
    */
   public function execute() {
+    $dependencies_met = FALSE;
     // Show this facet, if it is active itself and forced deactivation isn't on.
     if (!$this->settings['force_deactivation'] && $this->activeItems[$this->facet['name']]) {
       return;
@@ -55,13 +56,15 @@ class FacetapiDependencyFacet extends FacetapiDependency {
                     if (!empty($facet_item)) {
                       if (!$this->settings['regex']) {
                         if ($facet_item == $active_facet_item_key) {
-                          return;
+                          $dependencies_met = TRUE;
+                          break 1;
                         }
                       }
                       else {
                         $facet_item = '/' . trim(str_replace('/', '\\/', $facet_item)) . '/';
                         if (preg_match($facet_item, $active_facet_item_key)) {
-                          return;
+                          $dependencies_met = TRUE;
+                          break 1;
                         }
                       }
                     }
@@ -72,8 +75,14 @@ class FacetapiDependencyFacet extends FacetapiDependency {
           }
         }
 
+        // Dependencies are not met but we check that another facets narrow results.
+        if ($this->settings['show_not_narrow'] && !$dependencies_met) {
+          _facetapi_bonus_dependencies_passed($this->facet['name'], $this->settings);
+          return;
+        }
+
         // Otherwise hide this facet.
-        return FALSE;
+        return $dependencies_met;
       }
     }
   }
@@ -93,6 +102,13 @@ class FacetapiDependencyFacet extends FacetapiDependency {
       '#description' => t('Show this facet only if another one of these selected facet(s) is actively in use. If you select no other facets, the facet will be visible not depend on other facets.'),
     );
 
+    $form[$this->id]['show_not_narrow'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Show when another facet does not narrow results.'),
+      '#default_value' => $this->settings['show_not_narrow'],
+      '#description' => t('Dependency is met when another facet does not narrow results.'),
+    );
+
     $form[$this->id]['force_deactivation'] = array(
       '#type' => 'checkbox',
       '#title' => t('Force deactivation for unmet dependency.'),
@@ -132,6 +148,7 @@ class FacetapiDependencyFacet extends FacetapiDependency {
     if (!count($this->defaultSettings)) {
       $this->defaultSettings = array(
                                      'facets' => array(),
+                                     'show_not_narrow' => TRUE,
                                      'force_deactivation' => TRUE,
                                      'regex' => FALSE,
                                     );
diff --git a/plugins/facetapi/filter_dependency_helper.inc b/plugins/facetapi/filter_dependency_helper.inc
new file mode 100644
index 0000000..2c91075
--- /dev/null
+++ b/plugins/facetapi/filter_dependency_helper.inc
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * Plugin that provides Dependency functionality on Filter level.
+ */
+class FacetapiFilterDependencyHelper extends FacetapiFilter {
+
+  /**
+   * Filter items.
+   */
+  public function execute(array $build) {
+    $settings = _facetapi_bonus_dependencies_passed($this->settings->facet);
+    if (!$settings) {
+      // Dependency met on dependency plugin level.
+      return $build;
+    }
+
+    // If we are here, then all checks are passed and dependency unmet.
+    // We should check Pseudoactive Values as well.
+    $count = $this->adapter->getResultCount();
+    $current_search = $this->adapter->getCurrentSearch();
+    if (!$current_search) {
+      return $build;
+    }
+
+    list($query, $results) = $current_search;
+    if (!isset($results['search_api_facets'])) {
+      return array();
+    }
+    $results = $results['search_api_facets'];
+    $facets = array_filter($settings['facets']);
+    if (!count($facets)) {
+      return array();
+    }
+    foreach ($facets as $facet_name) {
+      if (empty($settings['facet_items_' . $facet_name]) || !isset($results[$facet_name])) {
+        continue;
+      }
+
+      $items_string = trim($settings['facet_items_' . $facet_name]);
+      $facet_items = drupal_explode_tags($items_string);
+      if (empty($items_string) || !count($facet_items)) {
+        continue;
+      }
+
+      $facet_count = 0;
+      foreach ($facet_items as $facet_item) {
+        if (!empty($facet_item)) {
+          foreach ($results[$facet_name] as $value) {
+            if (isset($value['filter']) &&  trim($value['filter'], '"') == $facet_item) {
+              $facet_count += $value['count'];
+            }
+          }
+        }
+      }
+
+      if ($facet_count == $count) {
+        return $build;
+      }
+    }
+
+    // Otherwise hide this facet.
+    return array();
+  }
+
+}
