diff --git a/corresponding_node_references.crud.inc b/corresponding_node_references.crud.inc
index 0e6e521..a0304b2 100644
--- a/corresponding_node_references.crud.inc
+++ b/corresponding_node_references.crud.inc
@@ -123,7 +123,7 @@ function corresponding_node_references_update($home_node, $home_field, $away_nod
                   // Remove references to the deleted node.
                   if ($value['nid'] && $value['nid'] == $home_node->nid) {
                     unset($referenced_node->{$away_field}[$referenced_node->language][$key]);
-                    _corresponding_node_references_update($referenced_node);
+                    _corresponding_node_references_update($referenced_node, $home_node);
                     break;
                   }
                 }
@@ -182,7 +182,7 @@ function corresponding_node_references_update($home_node, $home_field, $away_nod
               $references = count($referenced_node->{$away_field}[$referenced_node->language]) + 1;
               if (($allowed_references >= $references) || $unlimited) {
                 $referenced_node->{$away_field}[$referenced_node->language][] = array('nid' => $home_node->nid);
-                _corresponding_node_references_update($referenced_node);
+                _corresponding_node_references_update($referenced_node, $home_node);
               }
               else {
                 $t_reference = format_plural($references, '1 reference', '@count references');
@@ -246,6 +246,9 @@ function corresponding_node_references_delete($home_node, $home_field, $away_nod
  *
  * @param $node the referenced node to be updated.
  */
-function _corresponding_node_references_update(&$node) {
+function _corresponding_node_references_update(&$node, &$home_node = NULL) {
+  if( $home_node != NULL ) {
+  	node_save($home_node);
+  }
   node_save($node);
 }
