diff --git a/py/objint_mpz.c b/py/objint_mpz.c
index 542a0635661c1a6766bc8d2ad5964ccf0d0b039f..20fba00bf70a89922772f5ea885b5c98c18591e7 100644
--- a/py/objint_mpz.c
+++ b/py/objint_mpz.c
@@ -45,16 +45,18 @@
 
 #if MICROPY_PY_SYS_MAXSIZE
 // Export value for sys.maxsize
-#define DIG_MASK ((1 << MPZ_DIG_SIZE) - 1)
+#define DIG_MASK ((1L << MPZ_DIG_SIZE) - 1)
 STATIC const mpz_dig_t maxsize_dig[MPZ_NUM_DIG_FOR_INT] = {
     (INT_MAX >> MPZ_DIG_SIZE * 0) & DIG_MASK,
+    #if (INT_MAX >> MPZ_DIG_SIZE * 0) > DIG_MASK
     (INT_MAX >> MPZ_DIG_SIZE * 1) & DIG_MASK,
+    #if (INT_MAX >> MPZ_DIG_SIZE * 1) > DIG_MASK
     (INT_MAX >> MPZ_DIG_SIZE * 2) & DIG_MASK,
-    #if (INT_MAX >> MPZ_DIG_SIZE * 2) > DIG_MASK
     (INT_MAX >> MPZ_DIG_SIZE * 3) & DIG_MASK,
     (INT_MAX >> MPZ_DIG_SIZE * 4) & DIG_MASK,
 //    (INT_MAX >> MPZ_DIG_SIZE * 5) & DIG_MASK,
     #endif
+    #endif
 };
 const mp_obj_int_t mp_maxsize_obj = {
     {&mp_type_int},