diff --git a/loopy/isl_helpers.py b/loopy/isl_helpers.py
index b67411267ba8d8d41ee9629714b4c60009fe3ae0..57ca2e769e4d345a01ac94e94691f3a1e18df66e 100644
--- a/loopy/isl_helpers.py
+++ b/loopy/isl_helpers.py
@@ -170,6 +170,11 @@ def static_extremum_of_pw_aff(pw_aff, constants_only, set_method, what, context)
     if len(pieces) == 1:
         return pieces[0][1]
 
+    # put constant bounds first
+    pieces = (
+            [(set, aff) for set, aff in pieces if aff.is_cst()]
+            + [(set, aff) for set, aff in pieces if not aff.is_cst()])
+
     reference = pw_aff.get_aggregate_domain()
 
     if context is not None: