diff --git a/preprocessor/DataTree.cc b/preprocessor/DataTree.cc
index df7044dc8a1676d70cf40597841cc280b625c236..24621f3341b1cb484be5fdf6bfbb23bf930cceb0 100644
--- a/preprocessor/DataTree.cc
+++ b/preprocessor/DataTree.cc
@@ -228,8 +228,10 @@ DataTree::AddDifferent(expr_t iArg1, expr_t iArg2)
 expr_t
 DataTree::AddPower(expr_t iArg1, expr_t iArg2)
 {
-  if (iArg1 != Zero && iArg2 != Zero && iArg2 != One)
+  if (iArg1 != Zero && iArg2 != Zero && iArg1 != One && iArg2 != One)
     return AddBinaryOp(iArg1, oPower, iArg2);
+  else if (iArg1 == One)
+    return One;
   else if (iArg2 == One)
     return iArg1;
   else if (iArg2 == Zero)