Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php	(revision 21261)
+++ wp-includes/taxonomy.php	(working copy)
@@ -2381,15 +2381,42 @@
 		else
 			return new WP_Error('duplicate_term_slug', sprintf(__('The slug &#8220;%s&#8221; is already in use by another term'), $slug));
 	}
+    
 	do_action( 'edit_terms', $term_id );
-	$wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
-	if ( empty($slug) ) {
-		$slug = sanitize_title($name, $term_id);
+
+	$tt_id_sql = "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d";
+	
+	// Don't indiscriminately update the term name if the term is being used by another taxonomy
+	$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(taxonomy) FROM $wpdb->term_taxonomy WHERE term_id = %d", $term_id ) );
+
+	// if there are multiple instances, make the updated term a new term so we only have to alter one term_taxonomy row's term_id
+	if ( $count > 1 ) {  
+		$old_tt_id = $wpdb->get_var( $wpdb->prepare( $tt_id_sql, $taxonomy, $term_id ) );
+		$term_ids = wp_insert_term( $name, $taxonomy, $args );
+		if ( ! is_wp_error( $term_ids ) ) {
+			$new_tt_id = $term_ids['term_taxonomy_id'];
+			// since wp_insert_term creates a new term_tax entry, we need to delete our old one after updating term_rels
+			$wpdb->update( $wpdb->term_relationships, array( 'term_taxonomy_id' => $new_tt_id ), array( 'term_taxonomy_id' => $old_tt_id ) );
+			wp_delete_term( $term_id, $taxonomy );
+			_update_generic_term_count( array( $new_tt_id ), get_taxonomy( $taxonomy ) );
+			_update_post_term_count( array( $new_tt_id ), get_taxonomy( $taxonomy ) );
+			// reset term_id to new term_id
+			$term_id = $term_ids['term_id'];
+		} else {
+			return $term_ids;
+		}
+	} else {
+		$wpdb->update( $wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
+	}
+	
+	if ( empty( $slug ) ) {
+		$slug = sanitize_title( $name, $term_id );
 		$wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
 	}
+
 	do_action( 'edited_terms', $term_id );
 
-	$tt_id = $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) );
+	$tt_id = $wpdb->get_var( $wpdb->prepare( $tt_id_sql, $taxonomy, $term_id) );
 	do_action( 'edit_term_taxonomy', $tt_id, $taxonomy );
 	$wpdb->update( $wpdb->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent' ), array( 'term_taxonomy_id' => $tt_id ) );
 	do_action( 'edited_term_taxonomy', $tt_id, $taxonomy );
