--- taxonomy_menu.module	2010-01-21 20:47:02.000000000 -0500
+++ taxonomy_menu.module	2010-03-09 15:59:51.000000000 -0500
@@ -490,15 +490,24 @@ function taxonomy_menu_handler($op, $arg
  */
 function _taxonomy_menu_save($item) {
 
-  // Set the weight.  We need to do this becuase the menu system does not order the terms
-  // the same way that the taxonomy system does.
-  // We use a variable to store the value intead of static becuase
-  // using batch API loses the static value per requests.
-  $weight = variable_get('taxonomy_menu_weight', 0);
-  $weight++;
-  variable_set('taxonomy_menu_weight', $weight);
-
-  $insert = TRUE;
+  if (!$item['mlid']) {
+    // Set the weight.  We need to do this becuase the menu system does not order the terms
+    // the same way that the taxonomy system does.
+    // We use a variable to store the value intead of static becuase
+    // using batch API loses the static value per requests.
+    $weight = variable_get('taxonomy_menu_weight', 0);
+    $weight++;
+    variable_set('taxonomy_menu_weight', $weight);
+
+    // Set the default expanded value
+    $expanded = variable_get('taxonomy_menu_expanded_'. $item['vid'], TRUE);
+
+    $insert = TRUE;
+  } else {
+    $menu_link = menu_link_load($item['mlid']);
+    $weight = $menu_link['weight'];
+    $expanded = $menu_link['expanded'];
+  }
 
   //creat the path.
   //use url to create he inital path
@@ -521,7 +530,7 @@ function _taxonomy_menu_save($item) {
       ? $item['description'] : $item['name']))),
     'weight' => $weight,
     'module' => 'taxonomy_menu',
-    'expanded' => variable_get('taxonomy_menu_expanded_'. $item['vid'], TRUE),
+    'expanded' => $expanded,
     'link_path' => $path,
   );
 
