diff --git a/src/errors.h b/src/errors.h
index 47e9876..eb5ee1d 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -84,7 +84,7 @@
 EXTERN char e_type_or_initialization_required[]
 	INIT(= N_("E1022: Type or initialization required"));
 EXTERN char e_using_number_as_bool_nr[]
-	INIT(= N_("E1023: Using a Number as a Bool: %d"));
+	INIT(= N_("E1023: Using a Number as a Bool: %lld"));
 EXTERN char e_using_number_as_string[]
 	INIT(= N_("E1024: Using a Number as a String"));
 EXTERN char e_using_rcurly_outside_if_block_scope[]
diff --git a/src/evalfunc.c b/src/evalfunc.c
index c9acd41..9c3e9f5 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2567,7 +2567,7 @@
 {
     char_u	*str;
     varnumber_T	idx;
-    int		countcc = FALSE;
+    varnumber_T	countcc = FALSE;
     char_u	*p;
     int		len;
     int		(*ptr2len)(char_u *);
@@ -2588,7 +2588,7 @@
 	return;
 
     if (argvars[2].v_type != VAR_UNKNOWN)
-	countcc = (int)tv_get_bool(&argvars[2]);
+	countcc = tv_get_bool(&argvars[2]);
     if (countcc < 0 || countcc > 1)
     {
 	semsg(_(e_using_number_as_bool_nr), countcc);
@@ -2848,11 +2848,11 @@
     static void
 f_deepcopy(typval_T *argvars, typval_T *rettv)
 {
-    int		noref = 0;
+    varnumber_T	noref = 0;
     int		copyID;
 
     if (argvars[1].v_type != VAR_UNKNOWN)
-	noref = (int)tv_get_bool_chk(&argvars[1], NULL);
+	noref = tv_get_bool_chk(&argvars[1], NULL);
     if (noref < 0 || noref > 1)
 	semsg(_(e_using_number_as_bool_nr), noref);
     else
@@ -9185,12 +9185,12 @@
 f_strchars(typval_T *argvars, typval_T *rettv)
 {
     char_u		*s = tv_get_string(&argvars[0]);
-    int			skipcc = FALSE;
+    varnumber_T		skipcc = FALSE;
     varnumber_T		len = 0;
     int			(*func_mb_ptr2char_adv)(char_u **pp);
 
     if (argvars[1].v_type != VAR_UNKNOWN)
-	skipcc = (int)tv_get_bool(&argvars[1]);
+	skipcc = tv_get_bool(&argvars[1]);
     if (skipcc < 0 || skipcc > 1)
 	semsg(_(e_using_number_as_bool_nr), skipcc);
     else
diff --git a/src/list.c b/src/list.c
index d6357f7..77dd2a3 100644
--- a/src/list.c
+++ b/src/list.c
@@ -925,7 +925,7 @@
 	if (!range)
 	{
 	    if (verbose)
-		semsg(_(e_listidx), n1_arg);
+		semsg(_(e_listidx), (long)n1_arg);
 	    return FAIL;
 	}
 	n1 = n1 < 0 ? 0 : len;
@@ -1452,7 +1452,7 @@
     listitem_T	*item, *item2;
     listitem_T	*li;
     int		error = FALSE;
-    int		idx;
+    long	idx;
 
     if ((l = argvars[0].vval.v_list) == NULL
 			     || value_check_lock(l->lv_lock, arg_errmsg, TRUE))
@@ -1475,7 +1475,7 @@
 	else
 	{
 	    // Remove range of items, return list with values.
-	    int end = (long)tv_get_number_chk(&argvars[2], &error);
+	    long end = (long)tv_get_number_chk(&argvars[2], &error);
 
 	    if (error)
 		;		// type error: do nothing
diff --git a/src/version.c b/src/version.c
index 0367430..e29ae78 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2367,
+/**/
     2366,
 /**/
     2365,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 87a9218..b24475e 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1935,8 +1935,8 @@
 
 		    if (status == OK && dest_type == VAR_LIST)
 		    {
-			varnumber_T	lidx = tv_idx->vval.v_number;
-			list_T		*list = tv_dest->vval.v_list;
+			long	    lidx = (long)tv_idx->vval.v_number;
+			list_T	    *list = tv_dest->vval.v_list;
 
 			if (list == NULL)
 			{
@@ -2121,7 +2121,7 @@
 			else
 			{
 			    list_T	*l = tv_dest->vval.v_list;
-			    varnumber_T	n = tv_idx->vval.v_number;
+			    long	n = (long)tv_idx->vval.v_number;
 			    listitem_T	*li = NULL;
 
 			    li = list_find(l, n);
