diff -PrbB -u a/README.txt b/README.txt
--- a/README.txt	2012-11-09 17:47:09.475930213 +0100
+++ b/README.txt	2012-11-09 17:59:38.056291511 +0100
@@ -104,6 +104,9 @@
 - `drush features-export [feature name] [component list]`
 
   Write a new feature in code containing the components listed.
+  The option '--destination=foo' may be used to specify the path (from Drupal
+  root) where the feature should be created. The default destination is
+  'sites/all/modules'.
 
 - `drush features-update [feature name]`
 
diff -PrbB -u a/features.drush.inc b/features.drush.inc
--- a/features.drush.inc	2012-11-09 17:47:09.472929829 +0100
+++ b/features.drush.inc	2012-11-09 18:06:31.262903678 +0100
@@ -26,6 +26,9 @@
     'arguments' => array(
       'feature' => 'Feature name to export.',
     ),
+    'options' => array(
+      'destination' => "Destination path (from Drupal root) of the exported feature. Defaults to 'sites/all/modules'",
+    ),
     'drupal dependencies' => array('features'),
     'aliases' => array('fe'),
   );
@@ -87,7 +90,7 @@
     case 'drush:features':
       return dt("List all the available features for your site.");
     case 'drush:features-export':
-      return dt("Export a feature from your site into a module.");
+      return dt("Export a feature from your site into a module. If called with no arguments, display a list of available components. If called with a single argument, attempt to create a feature including the given component with the same name. The option '--destination=foo' may be used to specify the path (from Drupal root) where the feature should be created. The default destination is 'sites/all/modules'.");
     case 'drush:features-update':
       return dt("Update a feature module on your site.");
     case 'drush:features-update-all':
@@ -143,7 +146,7 @@
     // "value" of the component.
     list($source, $component) = explode(':', $args[0]);
     $stub = array($source => array($component));
-    _drush_features_export($stub, $component);
+    _drush_features_export($stub, array($component));
   }
   elseif (count($args) > 1) {
     // Assume that the user intends to create a new module based on a list of 
@@ -230,7 +233,8 @@
 function _drush_features_export($stub, $dependencies, $module_name = NULL, $directory = NULL) {
   $root = drush_get_option(array('r', 'root'), drush_locate_root());
   if ($root) {
-    $directory = isset($directory) ? $directory : 'sites/all/modules/' . $module_name;
+    $destination = drush_get_option(array('destination'), 'sites/all/modules');
+    $directory = isset($directory) ? $directory : $destination . '/' . $module_name;
     if (is_dir($directory)) {
       drush_print(dt('Module appears to already exist in !dir', array('!dir' => $directory)));
       if (!drush_confirm(dt('Do you really want to continue?'))) {
