--- nat.module.orig	2009-09-16 08:35:17.000000000 +1000
+++ nat.module	2009-09-16 08:36:05.000000000 +1000
@@ -90,6 +90,7 @@
 
       // Save node-term association in the NAT table.
       _nat_save_association($node->nid, $terms);
+      _nat_fixup_term_node($node);
       break;
     case 'update':
       // Ensure that this is a node form submission and not a direct node_save
@@ -101,6 +102,7 @@
         // Update term(s).
         $terms = nat_get_terms($node->nid);
         _nat_update_terms($terms, $node->title, $body, $node->taxonomy, $node->nat['related'], $node->nat['synonyms']);
+        _nat_fixup_term_node($node);
       }
       break;
     case 'delete':
@@ -110,11 +112,24 @@
       }
       // Delete node-term association from the NAT table.
       _nat_delete_association($node->nid);
+      _nat_fixup_term_node($node);
       break;
   }
 }
 
 /**
+ * Update $node->taxonomy from the terms stored in {nat}.  In order to have the
+ * effect you probably want, the module weight of 'nat' needs to be lower than
+ * 'taxonomy'.
+ */
+function _nat_fixup_term_node(&$node) {
+  $result = db_query('SELECT nid, vid, tid FROM {nat} WHERE nid = %d', $node->nid);
+  while ($row = db_fetch_object($result)) {
+    $node->taxonomy[$row->vid] = $row->tid;
+  }
+}
+
+/**
  * Implementation of hook_form_alter().
  */
 function nat_form_alter(&$form, &$form_state, $form_id) {
