diff -urN node_breadcrumb/integration/taxonomy_menu.inc node_breadcrumb.patched/integration/taxonomy_menu.inc
--- node_breadcrumb/integration/taxonomy_menu.inc	1970-01-01 01:00:00.000000000 +0100
+++ node_breadcrumb.patched/integration/taxonomy_menu.inc	2010-04-09 15:01:08.000000000 +0200
@@ -0,0 +1,62 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Taxonomy menu integration file for Node breadcrumb module.
+ */
+
+/**
+ * Implementation of hook_taxonomy_menu_delete().
+ */
+function node_breadcrumb_taxonomy_menu_delete($item) {
+  // Global var to store deleted items.
+  global $nb_tm_deleted;
+
+  if (!isset($nb_tm_deleted)) {
+    $nb_tm_deleted = array();
+  }
+
+  // Notify we deleted those terms.
+  if (isset($item['mlid'])) {
+    $nb_tm_deleted[] = $item;
+  }
+}
+
+/**
+ * Implementation of hook_taxonomy_menu_insert().
+ */
+function node_breadcrumb_taxonomy_menu_insert($item) {
+  global $nb_tm_deleted, $nb_tm_update;
+
+  if (!isset($nb_tm_update)) {
+    $nb_tm_update = array();
+  }
+
+  if (isset($nb_tm_deleted) && !empty($nb_tm_deleted)) {
+    foreach ($nb_tm_deleted as $_item) {
+      // Aptempt to find matching term from deleted one.
+      if ($_item['tid'] == $item['tid'] && isset($_item['mlid'])) {
+        $nb_tm_update[] = $_item;
+        break;
+      }
+    }
+  }
+}
+
+/**
+ * Implementation of hook_exit().
+ * This part is quite ugly and may interfer with node_breadcrumb main module.
+ */
+function node_breadcrumb_exit() {
+  global $nb_tm_update;
+
+  if (isset($nb_tm_update) && !empty($nb_tm_update)) {
+    foreach ($nb_tm_update as $item) {
+      if ($mlid = db_result(db_query("SELECT mlid FROM {taxonomy_menu} WHERE tid = %s", $item['tid']))) {
+        // Found a matching item, alter rules that matches this tid <> mlid assoc.
+        db_query("UPDATE {node_breadcrumb_rule} SET mid = %d WHERE mid = %d", array($mlid, $item['mlid']));
+      }
+    }
+  }
+}
diff -urN node_breadcrumb/node_breadcrumb.module node_breadcrumb.patched/node_breadcrumb.module
--- node_breadcrumb/node_breadcrumb.module	2009-10-22 13:27:09.000000000 +0200
+++ node_breadcrumb.patched/node_breadcrumb.module	2010-04-09 12:16:12.000000000 +0200
@@ -63,7 +63,30 @@
   return array('administer node breadcrumb');
 }
 
+function _node_breadcrumb_load_includes() {
+  if ($cache = cache_get('node_breadcrumb_includes')) {
+    $files = $cache->data ? $cache->data : array();
+  }
+  else {
+    $files = array();
+    foreach (array('taxonomy_menu') as $module) {
+      if (module_exists($module)) {
+        $file = drupal_get_path('module', 'node_breadcrumb') . '/integration/' . $module . '.inc';
+        if (file_exists($file)) {
+          $files[] = $file;
+        }
+      } 
+    }
+    cache_set('node_breadcrumb_includes', $files);
+  }
+  // Really include the files.
+  foreach ($files as $file) {
+    require_once $file;
+  }
+}
+
 function node_breadcrumb_init() {
+  _node_breadcrumb_load_includes();
   $menu_item = menu_get_item();
   if ($menu_item) {
 	$menu = db_result(db_query("select menu_name from {menu_links} where link_path='%s'", $menu_item['href']));
