diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index 23a0a6b..abb7f80 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -763,11 +763,20 @@ function taxonomy_term_delete($tid) {
         // See if any of the term's children are about to be become orphans:
         if ($children = taxonomy_term_load_children($tid)) {
           foreach ($children as $child) {
-            // If the term has multiple parents, we don't delete it.
             $parents = taxonomy_term_load_parents($child->tid);
+
+            // If the child has only one parent, we delete it.
             if (count($parents) == 1) {
               $orphans[] = $child->tid;
             }
+            // If the child has multiple parents,
+            // we do not delete it, but we remove the parent reference.
+            else if (count($parents) > 1) {
+            	db_delete('taxonomy_term_hierarchy')
+                ->condition('tid', $child->tid)
+                ->condition('parent', $tid)
+                ->execute();
+            }
           }
         }
 
