diff -Bbup category_old\category_menu.install category_new\category_menu.install
--- category_old\category_menu.install	Sun Nov 05 22:46:36 2006
+++ category_new\category_menu.install	Wed Mar 07 15:36:38 2007
@@ -16,6 +16,7 @@ function category_menu_install() {
     case 'mysqli':
       db_query("CREATE TABLE {category_menu} (
         cid int(10) unsigned NOT NULL default '0',
+        item_update_settings tinyint(3) unsigned NOT NULL default '0',
         item_for_cats tinyint(3) unsigned NOT NULL default '0',
         item_for_nodes tinyint(3) unsigned NOT NULL default '0',
         PRIMARY KEY (cid)
diff -Bbup category_old\category_menu.module category_new\category_menu.module
--- category_old\category_menu.module	Fri Jan 05 08:31:16 2007
+++ category_new\category_menu.module	Wed Mar 07 16:48:36 2007
@@ -102,6 +102,18 @@ function category_menu_category($op, $no
         '#collapsed' => TRUE,
         '#description' => t('For categories and containers, these settings only affect new nodes; update operations are performed if a menu item already exists for a particular category or container, regardless of these settings. For assigned nodes, these settings affect new and existing nodes. For categories and containers, if the parent of the node being created does not have a menu item, then the system will traverse all ancestors (of lightest weight) in the category tree, until one with a menu item is found, or until the top of the tree is reached.'),
       );
+	  
+	  $form['category_menu']['item_update_settings'] = array(
+	  	'#type' => 'radios',
+		'#title' => 'Menu item update settings',
+		'#default_value' => isset($node->item_update_settings) ? $node->item_update_settings : 1,
+		'#options' => array(
+			0 => t('Status Independant'),
+			1 => t('Published Only'),
+		),
+		'#description' => t('Controls whether a node will be updated based on it\'s current published or unpublished status.  If set to \'Status Independant\', then menu links will be managed by this module irregardless of the status of the node.  If set to \'Published Only\', nodes that are unpublished will not appear in the menu system.  Only nodes specified as published will be reflected in the menu system.  <strong>Note:</strong> If a node\'s status is changed from published to unpublished, it will be removed from the menu system.'),
+	  );
+	  
       $options = array(
         0 => t('Disabled'),
         1 => t('Enabled'),
@@ -204,7 +216,7 @@ function category_menu_entity_inserted(&
     }
 
     if ($do_insert) {
-      $node->menu_settings = $menu_settings->item_for_cats;
+      $node->menu_settings = $menu_settings;
       if (empty($node->parents)) {
         // Insert case 1(a): category / container with 0 parents
         category_menu_save_item($node);
@@ -242,7 +254,7 @@ function category_menu_entity_inserted(&
           // assigned nodes that are assigned to >= 1 category
           $first_category = reset($categories);
           $menu_settings = category_menu_cont_load($first_category->cnid, TRUE);
-          $assigned_node->menu_settings = $menu_settings->item_for_nodes;
+          $assigned_node->menu_settings = $menu_settings;
           category_menu_save_item($assigned_node, $first_category->cid);
         }
       }
@@ -258,7 +270,7 @@ function category_menu_entity_inserted(&
       $menu_settings = category_menu_cont_load($first_category->cnid);
       if ($menu_settings->item_for_nodes) {
         $do_insert = TRUE;
-        $node->menu_settings = $menu_settings->item_for_nodes;
+        $node->menu_settings = $menu_settings;
         category_menu_save_item($node, $first_category->cid);
       }
       array_shift($categories);
@@ -296,6 +308,7 @@ function category_menu_entity_updated(&$
             if (is_array($node_item->parents) && !empty($node_item->parents)) {
               foreach($node_item->parents as $p) {
                 if($p == $node->nid) {
+				  drupal_set_message("here 0");
                   category_menu_save_item($node_item);
                 }
               }
@@ -314,10 +327,13 @@ function category_menu_entity_updated(&$
     }
 
     if ($do_insert) {
-      $node->menu_settings = $menu_settings->item_for_cats;
+      $node->menu_settings = $menu_settings;
       if (empty($node->parents)) {
         // Update case 1(a): category / container with 0 parents
+		if (($node->menu_settings->item_update_settings == 1 && $node->status == 1) || $node->menu_settings->item_update_settings == 0)
         category_menu_save_item($node);
+		else
+		  category_menu_delete_item($node);
       }
       elseif (is_array($node->parents)) {
         $parent = $node->parents[0];
@@ -341,7 +357,10 @@ function category_menu_entity_updated(&$
         } while (!($item_found || $reached_root));
 
         // Update cases 1(b) and 2: category / container with >= 1 parent
+		if (($node->menu_settings->item_update_settings == 1 && $node->status == 1) || $node->menu_settings->item_update_settings == 0)
         category_menu_save_item($node, $parent);
+		else 
+			category_menu_delete_item($node);
       }
 
       $assigned_nodes = category_select_nodes(array($node->nid));
@@ -353,8 +372,11 @@ function category_menu_entity_updated(&$
           $first_category = reset($categories);
           $menu_settings = category_menu_cont_load($first_category->cnid, TRUE);
           if (!empty($menu_settings->item_for_nodes)) {
-            $assigned_node->menu_settings = $menu_settings->item_for_nodes;
+            $assigned_node->menu_settings = $menu_settings;
+			if (($menu_settings->item_update_settings == 1 && $node->status == 1) || $menu_settings->item_update_settings == 0)
             category_menu_save_item($assigned_node, $first_category->cid);
+			else
+				category_menu_delete_item($assigned_node);
           }
         }
       }
@@ -367,6 +389,7 @@ function category_menu_entity_updated(&$
         foreach ($children as $child) {
           $node_item = node_load($child->cid);
           if (is_array($node_item->parents) && !empty($node_item->parents)) {
+		    drupal_set_message("here 1");
             category_menu_save_item($node_item, $node_item->parents[0]);
           }
         }
@@ -385,11 +408,13 @@ function category_menu_entity_updated(&$
       $menu_settings = category_menu_cont_load($first_category->cnid);
       if ($menu_settings->item_for_nodes) {
         $do_insert = TRUE;
-        $node->menu_settings = $menu_settings->item_for_nodes;
+        $node->menu_settings = $menu_settings;
+		if (($menu_settings->item_update_settings == 1 && $node->status == 1) || $menu_settings->item_update_settings == 0)
         category_menu_save_item($node, $first_category->cid);
+		else
+			category_menu_delete_item($node);
       }
       array_shift($categories);
-
     } while (!$do_insert && (count($categories) > 0));
 
     if (!$do_insert) {
@@ -401,6 +426,7 @@ function category_menu_entity_updated(&$
   }
 
   if ($clear_menu_item) {
+  	echo "special case";
     // Update special case: node tagged with no categories
     $mid = category_menu_get_mapping($node->nid);
     if ($mid) {
@@ -420,6 +446,7 @@ function category_menu_cont_update($node
   $node->cid = $node->nid;
   $fields = array(
     'cid',
+	'item_update_settings',
     'item_for_cats',
     'item_for_nodes',
   );
@@ -456,8 +483,11 @@ function category_menu_entity_deleted(&$
           $menu_settings = category_menu_cont_load($first_category->cnid);
           if ($menu_settings->item_for_nodes) {
             $do_insert = TRUE;
-            $assigned_node->menu_settings = $menu_settings->item_for_nodes;
+            $assigned_node->menu_settings = $menu_settings;
+			if (($menu_settings->item_update_settings == 1 && $node->status == 1) || $menu_settings->item_update_settings == 0)
             category_menu_save_item($assigned_node, $first_category->cid);
+			else
+			  category_menu_delete_item($assigned_node);
           }
           array_shift($categories);
 
@@ -545,11 +575,11 @@ function category_menu_save_item(&$node,
   $item['weight'] = $node->weight;
   $item['type'] = MENU_CUSTOM_ITEM | MENU_MODIFIED_BY_ADMIN;
 
-  if (isset($node->menu_settings)) {
-    if ($node->menu_settings == 2) {
+  if (isset($node->menu_settings->item_for_node)) {
+    if ($node->menu_settings->item_for_node == 2) {
       $item['type'] &= ~MENU_VISIBLE_IN_TREE;
     }
-    if ($node->menu_settings == 3) {
+    if ($node->menu_settings->item_for_node == 3) {
       $item['type'] |= MENU_EXPANDED;
     }
     else {
@@ -557,6 +587,8 @@ function category_menu_save_item(&$node,
     }
   }
 
+  // only save the item if the update settings are set to update
+  if (($node->menu_settings->item_update_settings == 1 && $node->status == 1) || $node->menu_settings->item_update_settings == 0) {
   $status = menu_save_item($item);
 
   if ($status == SAVED_NEW) {
@@ -567,6 +599,7 @@ function category_menu_save_item(&$node,
   $node->menu = $item;
 
   menu_rebuild();
+  }
 }
 
 /**
