diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index a48de8837c4f87810041297a14951cdc51fffc3f..7d2814be28de5b735c9129cd1aa52d5c50062b66 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -2191,6 +2191,9 @@ UnaryOpNode::cost(const vector<vector<temporary_terms_t>> &blocks_temporary_term
 int
 UnaryOpNode::cost(int cost, bool is_matlab) const
 {
+  if (op_code == UnaryOpcode::uminus && dynamic_cast<NumConstNode *>(arg))
+    return 0; // Cost is zero for a negative constant, as for a positive one
+
   if (is_matlab)
     // Cost for Matlab files
     switch (op_code)