diff --git a/src/cindent.c b/src/cindent.c
index 7ac1f4b..a9b813f 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -1734,7 +1734,7 @@
     int		divider;
     int		fraction = 0;
     int		sw;
-    long long	t = get_sw_value(buf);
+    long	t = get_sw_value(buf);
 
     // needed for cino-(, it will be multiplied by 2 again
     if (t > INT_MAX / 2)
@@ -1902,17 +1902,14 @@
 	    {
 		n *= sw;
 		if (divider)
-		    n += (sw * fraction + divider / 2) / divider;
+		    n += ((long long)sw * fraction + divider / 2) / divider;
 	    }
 	    ++p;
 	}
 	if (l[1] == '-')
 	    n = -n;
 
-	if (n > INT_MAX)
-	    n = INT_MAX;
-	else if (n < INT_MIN)
-	    n = INT_MIN;
+	n = trim_to_int(n);
 
 	// When adding an entry here, also update the default 'cinoptions' in
 	// doc/indent.txt, and add explanation for it!
diff --git a/src/misc1.c b/src/misc1.c
index dc0deae..a82ef9c 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2838,3 +2838,11 @@
     *value = x * 10 + (long)digit;
     return OK;
 }
+
+// Return something that fits into an int.
+    int
+trim_to_int(long long x)
+{
+    return x > INT_MAX ? INT_MAX : x < INT_MIN ? INT_MIN : x;
+}
+
diff --git a/src/ops.c b/src/ops.c
index 7cb82b8..e30fea7 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -230,8 +230,8 @@
     int call_changed_bytes)	// call changed_bytes()
 {
     long long	count;
-    long	i, j;
-    long	sw_val = get_sw_value_indent(curbuf);
+    int		i, j;
+    int		sw_val = trim_to_int(get_sw_value_indent(curbuf));
 
     count = (long long)get_indent();	// get current indent
 
@@ -263,14 +263,11 @@
 	    count += (long long)sw_val * (long long)amount;
     }
 
-    if (count > INT_MAX)
-	count = INT_MAX;
-
     // Set new indent
     if (State & VREPLACE_FLAG)
-	change_indent(INDENT_SET, (int)count, FALSE, NUL, call_changed_bytes);
+	change_indent(INDENT_SET, trim_to_int(count), FALSE, NUL, call_changed_bytes);
     else
-	(void)set_indent((int)count, call_changed_bytes ? SIN_CHANGED : 0);
+	(void)set_indent(trim_to_int(count), call_changed_bytes ? SIN_CHANGED : 0);
 }
 
 /*
diff --git a/src/proto/misc1.pro b/src/proto/misc1.pro
index 2b8e9d8..c602b0e 100644
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -55,4 +55,5 @@
 void may_trigger_modechanged(void);
 int vim_append_digit_int(int *value, int digit);
 int vim_append_digit_long(long *value, int digit);
+int trim_to_int(long long x);
 /* vim: set ft=c : */
diff --git a/src/version.c b/src/version.c
index 1bbaac3..fc33898 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2124,
+/**/
     2123,
 /**/
     2122,
