diff --git a/src/files.c b/src/files.c
index 42426e33cd6e58096a214139b1274c9673f6d9ab..a9b3003ca37caf72fe5548bc878293cdfea1612b 100644
--- a/src/files.c
+++ b/src/files.c
@@ -891,24 +891,24 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable,
 #ifndef NANO_TINY
     else if (format == 3) {
 	/* TRANSLATORS: Keep the next four messages at most 78 characters. */
-	statusline(HUSH, P_("Read %lu line (Converted from DOS and Mac format)",
-			"Read %lu lines (Converted from DOS and Mac format)",
-			(unsigned long)num_lines), (unsigned long)num_lines);
+	statusline(HUSH, P_("Read %zu line (Converted from DOS and Mac format)",
+			"Read %zu lines (Converted from DOS and Mac format)",
+			num_lines), num_lines);
     } else if (format == 2) {
 	openfile->fmt = MAC_FILE;
-	statusline(HUSH, P_("Read %lu line (Converted from Mac format)",
-			"Read %lu lines (Converted from Mac format)",
-			(unsigned long)num_lines), (unsigned long)num_lines);
+	statusline(HUSH, P_("Read %zu line (Converted from Mac format)",
+			"Read %zu lines (Converted from Mac format)",
+			num_lines), num_lines);
     } else if (format == 1) {
 	openfile->fmt = DOS_FILE;
-	statusline(HUSH, P_("Read %lu line (Converted from DOS format)",
-			"Read %lu lines (Converted from DOS format)",
-			(unsigned long)num_lines), (unsigned long)num_lines);
+	statusline(HUSH, P_("Read %zu line (Converted from DOS format)",
+			"Read %zu lines (Converted from DOS format)",
+			num_lines), num_lines);
     }
 #endif
     else
-	statusline(HUSH, P_("Read %lu line", "Read %lu lines",
-			(unsigned long)num_lines), (unsigned long)num_lines);
+	statusline(HUSH, P_("Read %zu line", "Read %zu lines",
+			num_lines), num_lines);
 
     /* If we inserted less than a screenful, don't center the cursor. */
     if (undoable && less_than_a_screenful(was_lineno, was_leftedge))
@@ -1957,8 +1957,8 @@ bool write_file(const char *name, FILE *f_open, bool tmp,
 	    stat_with_alloc(realname, &openfile->current_stat);
 #endif
 
-	statusline(HUSH, P_("Wrote %lu line", "Wrote %lu lines",
-		(unsigned long)lineswritten), (unsigned long)lineswritten);
+	statusline(HUSH, P_("Wrote %zu line", "Wrote %zu lines",
+			lineswritten), lineswritten);
 	openfile->modified = FALSE;
 	titlebar(NULL);
     }
diff --git a/src/history.c b/src/history.c
index 5ee5091fe193732cab01caf8c7a8ca00a86641b1..aa4f60f59262f2a3a9bdee8ca4a438ab729ca940 100644
--- a/src/history.c
+++ b/src/history.c
@@ -472,8 +472,8 @@ void save_poshistory(void)
 	    /* Assume 20 decimal positions each for line and column number,
 	     * plus two spaces, plus the line feed, plus the null byte. */
 	    path_and_place = charalloc(strlen(posptr->filename) + 44);
-	    sprintf(path_and_place, "%s %ld %ld\n", posptr->filename,
-			(long)posptr->lineno, (long)posptr->xno);
+	    sprintf(path_and_place, "%s %zd %zd\n",
+			posptr->filename, posptr->lineno, posptr->xno);
 	    length = strlen(path_and_place);
 
 	    /* Encode newlines in filenames as nulls. */
diff --git a/src/search.c b/src/search.c
index a63885f4fc22f16856d04aadc30838bb3d14e4b7..8a6ae4a092b606666b36ec34dd5ad0f3addf6c31 100644
--- a/src/search.c
+++ b/src/search.c
@@ -778,9 +778,8 @@ void do_replace(void)
     refresh_needed = TRUE;
 
     if (numreplaced >= 0)
-	statusline(HUSH, P_("Replaced %lu occurrence",
-		"Replaced %lu occurrences", (unsigned long)numreplaced),
-		(unsigned long)numreplaced);
+	statusline(HUSH, P_("Replaced %zd occurrence",
+		"Replaced %zd occurrences", numreplaced), numreplaced);
 
     search_replace_abort();
 }
diff --git a/src/utils.c b/src/utils.c
index 530dd2cd4538b06ec39ea18f41a984e8d7792340..87243038d003057fec4980f4810ce7e5110e9b92 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -559,7 +559,7 @@ void dump_filestruct(const filestruct *inptr)
 	fprintf(stderr, "Dumping a buffer to stderr...\n");
 
     while (inptr != NULL) {
-	fprintf(stderr, "(%ld) %s\n", (long)inptr->lineno, inptr->data);
+	fprintf(stderr, "(%zd) %s\n", inptr->lineno, inptr->data);
 	inptr = inptr->next;
     }
 }
@@ -570,8 +570,7 @@ void dump_filestruct_reverse(void)
     const filestruct *fileptr = openfile->filebot;
 
     while (fileptr != NULL) {
-	fprintf(stderr, "(%ld) %s\n", (long)fileptr->lineno,
-		fileptr->data);
+	fprintf(stderr, "(%zd) %s\n", fileptr->lineno, fileptr->data);
 	fileptr = fileptr->prev;
     }
 }
diff --git a/src/winio.c b/src/winio.c
index cd466d2d60c4b18f6b2ff19b4417bcd761dfbd2b..215adf2dd798e1bc115422e6f72cb1dd437bea27 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2433,7 +2433,7 @@ void edit_draw(filestruct *fileptr, const char *converted,
 	    mvwprintw(edit, row, 0, "%*s", margin - 1, " ");
 	else
 #endif
-	    mvwprintw(edit, row, 0, "%*ld", margin - 1, (long)fileptr->lineno);
+	    mvwprintw(edit, row, 0, "%*zd", margin - 1, fileptr->lineno);
 	wattroff(edit, interface_color_pair[LINE_NUMBER]);
     }
 #endif