diff --git a/sites/all/modules/rules/rules/rules.export.inc b/sites/all/modules/rules/rules/rules.export.inc
index e4c41a2..92ee30f 100644
--- a/sites/all/modules/rules/rules/rules.export.inc
+++ b/sites/all/modules/rules/rules/rules.export.inc
@@ -65,7 +65,7 @@ function rules_item_rule_export($rule_name, &$rule, &$export, $module = NULL) {
     
     if (strpos($rule_name, $module) !== 0) {
       // Make sure the name isn't already taken.
-      $rules = rules_get_items('rules');
+      $rules = $export['rules'];//rules_get_items('rules');
       while (isset($rules[$module .'_'. $counter])) {
         $counter++;
       }
@@ -122,11 +122,23 @@ function rules_features_export_render($module = 'foo', $data, $features_export)
   if (isset($features_export['features']['rules_sets'])) {
     $export['rule_sets'] = array_intersect_key($items, $features_export['features']['rules_sets']);
   }
-
-  $module = strpos($module, '_features_comparison') === 0 ? '' : $module;
-  $export = rules_export_items($export, $module);
-  $export += array('rules' => array());
-  $export['rules'] += $data;
+  // $data is either numerical array of rule names, or associative arrays of data.
+  // If numerical, swap keys and load. If associative, pass straight into rules_export_items.
+  if (count($data)){
+    if (isset($data[0])){
+      $items += rules_get_configured_items('rules');
+      $new_data = drupal_map_assoc($data);
+      $export['rules'] = array_intersect_key($items,$new_data);
+      
+      $module = strpos($module, '_features_comparison') === 0 ? '' : $module;
+      $export = rules_export_items($export, $module);
+    } else {
+      $module = strpos($module, '_features_comparison') === 0 ? '' : $module;
+      $export = rules_export_items($export, $module);
+      $export['rules'] = $data;
+    }
+  }
+  
   $defaults = features_var_export($export, '  ');
   
   return array('rules_defaults' => "  return $defaults;");
