diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py
index f6adfeebf79aef2e5f3b0ecc782ef15e0c0a2192..769301ed99d8486a396dbf94b06bf361771596cb 100644
--- a/loopy/kernel/tools.py
+++ b/loopy/kernel/tools.py
@@ -686,7 +686,7 @@ def get_auto_axis_iname_ranking_by_stride(kernel, insn):
             aggregate_strides[iname] = aggregate_strides.get(iname, 0) + stride
 
     if aggregate_strides:
-        very_large_stride = np.iinfo(np.int32).max
+        very_large_stride = int(np.iinfo(np.int32).max)
 
         return sorted((iname for iname in kernel.insn_inames(insn)),
                 key=lambda iname: (
@@ -824,7 +824,9 @@ def assign_automatic_axes(kernel, axis=0, local_size=None):
             #  numbered "valid" passes--assign the remainder by length.
 
             # assign longest auto axis inames first
-            auto_axis_inames.sort(key=kernel.get_constant_iname_length, reverse=True)
+            auto_axis_inames.sort(
+                            key=lambda iname: (kernel.get_constant_iname_length(iname), iname),
+                            reverse=True)
 
             if auto_axis_inames:
                 return assign_axis(axis, auto_axis_inames.pop())