diff --git a/loopy/compiled.py b/loopy/compiled.py
index a30e4b133c60987213d5a62482b7a04a21cc05ad..3ef3ee27dd77daff398303a1715882199b8ec6d4 100644
--- a/loopy/compiled.py
+++ b/loopy/compiled.py
@@ -192,7 +192,7 @@ def generate_integer_arg_finding_from_shapes(gen, kernel, implemented_data_info)
             for arg_name, value_expr in sources:
                 gen("%s %s is not None:" % (if_stmt, arg_name))
                 with Indentation(gen):
-                    gen("%s = %s"
+                    gen("%s = int(%s)"
                             % (iarg_name, StringifyMapper()(value_expr)))
 
                 if_stmt = "elif"
@@ -226,10 +226,10 @@ def generate_integer_arg_finding_from_offsets(gen, kernel, implemented_data_info
                 gen("else:")
                 with Indentation(gen):
                     if not options.no_numpy:
-                        gen("_lpy_offset = getattr(%s, \"offset\", 0)"
+                        gen("_lpy_offset = int(getattr(%s, \"offset\", 0))"
                                 % impl_array_name)
                     else:
-                        gen("_lpy_offset = %s.offset" % impl_array_name)
+                        gen("_lpy_offset = int(%s.offset)" % impl_array_name)
 
                     base_arg = kernel.impl_arg_to_arg[impl_array_name]
 
@@ -242,7 +242,7 @@ def generate_integer_arg_finding_from_offsets(gen, kernel, implemented_data_info
                                 % impl_array_name)
                         gen("del _lpy_remdr")
                     else:
-                        gen("%s = _lpy_offset // %d)"
+                        gen("%s = _lpy_offset // %d"
                                 % (arg.name, base_arg.dtype.itemsize))
 
                     if not options.skip_arg_checks:
@@ -287,11 +287,9 @@ def generate_integer_arg_finding_from_strides(gen, kernel, implemented_data_info
                                 "not divisible by its dtype itemsize\""
                                 % (stride_impl_axis, impl_array_name))
                         gen("del _lpy_remdr")
+                        gen("%s = int(%s)" % (arg.name, arg.name))
                     else:
-                        gen("%s = divmod(%s.strides[%d], %d)"
-                                % (arg.name, impl_array_name, stride_impl_axis,
-                                    base_arg.dtype.itemsize))
-                        gen("%s = _lpy_offset // %d)"
+                        gen("%s = int(_lpy_offset // %d)"
                                 % (arg.name, base_arg.dtype.itemsize))
 
     gen("# }}}")
diff --git a/loopy/target/pyopencl.py b/loopy/target/pyopencl.py
index b5bd7b63ae27b7ba8e78a9066590204df04dfa9c..7939dc764114387a2d1f2a10bf361fd7d06c13ba 100644
--- a/loopy/target/pyopencl.py
+++ b/loopy/target/pyopencl.py
@@ -657,4 +657,6 @@ class PyOpenCLCASTBuilder(OpenCLCASTBuilder):
     # }}}
 
 # }}}
+
+
 # vim: foldmethod=marker