diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 14ed64a870474af02108c4a26180e1078b032ae6..c98344c701860fcdf0077fed59893c31d83aa97c 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -3211,7 +3211,7 @@ UnaryOpNode::substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nod
           int symb_id = datatree.symbol_table.addUnaryOpAuxiliaryVar(this->idx, const_cast<UnaryOpNode *>(this),
                                                                                vn->get_symb_id(), vn->get_lag());
           aux_var = datatree.AddVariable(symb_id, 0);
-          neweqs.push_back(dynamic_cast<BinaryOpNode *>(datatree.AddEqual(aux_var, const_cast<UnaryOpNode *>(this))));
+          neweqs.push_back(dynamic_cast<BinaryOpNode *>(datatree.AddEqual(aux_var, dynamic_cast<UnaryOpNode *>(rit->second))));
           subst_table[rit->second] = dynamic_cast<VariableNode *>(aux_var);
         }
       else