diff --git a/ChangeLog b/ChangeLog
index e96c162c0ba67d1b84626dd0ebeba2d7e7b7649e..4377c815d21d11f9e1d048a0ea6b7951ceac1149 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,9 @@
 	* src/text.c (do_justify), src/winio.c (parse_escape_sequence):
 	Show the cursor after a justification and after an unrecognized
 	escape sequence, and in the edit window when linting.
+	* src/text.c (do_linter): Use the correct column number, also when
+	messages are skipped.  And don't mind zero or negative numbers.
+	This is a partial fix for Savannah bug #47131.
 
 2016-02-21  Benno Schulenberg  <bensberg@justemail.net>
 	* src/files.c (input_tab): If the first Tab added the part that all
diff --git a/src/text.c b/src/text.c
index 5611c4aaaf9764cacbaa012df142b37550d9e21b..362e6bfec1d654b66343328cf8233d7a060067db 100644
--- a/src/text.c
+++ b/src/text.c
@@ -3106,13 +3106,9 @@ void do_linter(void)
     curlint = lints;
 
     while (TRUE) {
-	ssize_t tmpcol = 1;
 	int kbinput;
 	functionptrtype func;
 
-	if (curlint->colno > 0)
-	    tmpcol = curlint->colno;
-
 	if (tmplint != curlint) {
 #ifndef NANO_TINY
 	    struct stat lintfileinfo;
@@ -3159,7 +3155,7 @@ void do_linter(void)
 		}
 	    }
 #endif /* !NANO_TINY */
-	    do_gotolinecolumn(curlint->lineno, tmpcol, FALSE, FALSE);
+	    do_gotolinecolumn(curlint->lineno, curlint->colno, FALSE, FALSE);
 	    titlebar(NULL);
 	    edit_refresh();
 	    statusbar(curlint->msg);