Index: node_breadcrumb.module
===================================================================
--- node_breadcrumb.module	(revision 1098)
+++ node_breadcrumb.module	(working copy)
@@ -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']));
Index: integration/taxonomy_menu.inc
===================================================================
--- integration/taxonomy_menu.inc	(revision 0)
+++ integration/taxonomy_menu.inc	(revision 0)
@@ -0,0 +1,38 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Taxonomy menu integration file for Node breadcrumb module.
+ */
+
+function node_breadcrumb_taxonomy_menu_delete($item) {
+  // Global var to store deleted items.
+  global $node_breadrumb_taxonomy_menu;
+
+  if (!isset($node_breadrumb_taxonomy_menu)) {
+    $node_breadrumb_taxonomy_menu = array();
+  }
+
+  // Notify we deleted those terms.
+  if (isset($item['mlid'])) {
+    $node_breadrumb_taxonomy_menu[] = $item;
+  }
+}
+
+function node_breadcrumb_taxonomy_menu_insert($item) {
+  global $node_breadrumb_taxonomy_menu;
+
+  if (isset($node_breadrumb_taxonomy_menu) && !empty($node_breadrumb_taxonomy_menu)) {
+    foreach ($node_breadrumb_taxonomy_menu as $_item) {
+      // Aptempt to find matching term from deleted one.
+      if ($_item['tid'] == $item['tid'] && isset($_item['mlid'])) {
+        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']));
+        }
+        break;
+      }
+    }
+  }
+}
