--- /tmp/features/features.drush.inc	2010-07-29 20:47:48.000000000 -0300
+++ features.drush.inc	2010-08-25 14:46:27.000000000 -0300
@@ -175,17 +175,27 @@
  */
 function drush_features_update() {
   if ($args = func_get_args()) {
-    foreach ($args as $module) {
-      if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
-        _drush_features_export($feature->info['features'], $feature->info['dependencies'], $feature->name, dirname($feature->filename));
-      }
-      else if ($feature) {
-        _features_drush_set_error($module, 'FEATURES_FEATURE_NOT_ENABLED');
-      }
-      else {
-        _features_drush_set_error($module);
+    $module = array_shift($args);
+    if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
+      $stub = $feature->info['features'];
+      foreach ($args as $v) {
+        list($source, $component) = explode(':', $v);
+        if (!is_array($stub[$source])) {
+          $stub[$source] = array();
+        }
+        if (!array_search($component, $stub[$source])) {
+          $stub[$source][] = $component;
+        }
       }
+      _drush_features_export($stub, $feature->info['dependencies'], $feature->name, dirname($feature->filename));
+    }
+    else if ($feature) {
+      _features_drush_set_error($module, 'FEATURES_FEATURE_NOT_ENABLED');
+    }
+    else {
+      _features_drush_set_error($module);
     }
+    
   }
   else {
     // By default just show contexts that are available.
