Index: src/ControlStruct/TranslateEnumRange.cpp
===================================================================
--- src/ControlStruct/TranslateEnumRange.cpp	(revision a9ae5ca2776396c5fe1eb7ac900b1f7f8ebdfacc)
+++ src/ControlStruct/TranslateEnumRange.cpp	(revision 7f18438f6ced55ef03d1637ee81da566c4cbb844)
@@ -51,7 +51,10 @@
     // it wraps around and become unsigned max
     ast::UntypedExpr * condition = ast::UntypedExpr::createCall( location,
-        "?<=?",
+        stmt->is_inc? "?<=?": "?>=?",
         {   new ast::NameExpr( location, indexName ),
-            ast::UntypedExpr::createCall( location, "upperBound", {} )  });
+            stmt->is_inc?
+                ast::UntypedExpr::createCall( location, "upperBound", {} ):
+                ast::UntypedExpr::createCall( location, "lowerBound", {} )
+        });
     auto increment = ast::UntypedExpr::createCall( location, 
         stmt->is_inc? "succ_unsafe": "pred_unsafe",
