diff --git a/preprocessor/ExprNode.cc b/preprocessor/ExprNode.cc
index c4e56ff03572e0912d1de9afae68f0391fe186b7..67a38ebcc1ccb65750949d5b8594120193f26a15 100644
--- a/preprocessor/ExprNode.cc
+++ b/preprocessor/ExprNode.cc
@@ -2024,10 +2024,12 @@ BinaryOpNode::computeTemporaryTerms(map<NodeID, int> &reference_count,
     }
   else
     {
-      // If the node has already been encountered, increment its ref count
-      //  and declare it as a temporary term if it is too costly
+      /* If the node has already been encountered, increment its ref count
+         and declare it as a temporary term if it is too costly (except if it is
+         an equal node: we don't want them as temporary terms) */
       reference_count[this2]++;
-      if (reference_count[this2] * cost(temporary_terms, is_matlab) > MIN_COST(is_matlab))
+      if (reference_count[this2] * cost(temporary_terms, is_matlab) > MIN_COST(is_matlab)
+          && op_code != oEqual)
         temporary_terms.insert(this2);
     }
 }
@@ -2052,7 +2054,8 @@ BinaryOpNode::computeTemporaryTerms(map<NodeID, int> &reference_count,
   else
     {
       reference_count[this2]++;
-      if (reference_count[this2] * cost(temporary_terms, false) > MIN_COST_C)
+      if (reference_count[this2] * cost(temporary_terms, false) > MIN_COST_C
+          && op_code != oEqual)
         {
           temporary_terms.insert(this2);
           v_temporary_terms[first_occurence[this2].first][first_occurence[this2].second].insert(this2);