diff --git a/sites/all/modules/contrib/features/features.drush.inc b/sites/all/modules/contrib/features/features.drush.inc
index 919f54a..e5b2ef1 100644
--- a/sites/all/modules/contrib/features/features.drush.inc
+++ b/sites/all/modules/contrib/features/features.drush.inc
@@ -117,6 +117,14 @@ function features_drush_command() {
     'drupal dependencies' => array('features', 'diff'),
     'aliases' => array('fd'),
   );
+  $items['features-diff-all'] = array(
+    'description' => "Show the difference between the default and overridden state of every feature.",
+    'arguments' => array(
+      'feature_exclude' => 'A space-delimited list of features to exclude from the diff.',
+    ),
+    'drupal dependencies' => array('features'),
+    'aliases' => array('fd-all', 'fda'),
+  );
 
   return $items;
 }
@@ -786,6 +794,24 @@ function drush_features_diff() {
     }
   }
 }
+/**
+ * Run a diff on all of the features. Optionally pass in a list of features to
+ * exclude from being diff'ed.
+ */
+function drush_features_diff_all() {
+  $features_to_update = array();
+  $features_to_exclude = func_get_args();
+  foreach (features_get_features() as $module) {
+    if ($module->status && !in_array($module->name, $features_to_exclude)) {
+      $features_to_update[] = $module->name;
+    }
+  }
+  foreach ($features_to_update as $module_name) {
+    print "--- $module_name\n";
+    drush_features_diff($module_name);
+    print "\n";
+  }
+}
 
 /**
  * Helper function to call drush_set_error().
