Compilation message patterns (in compilation-regexp-alist and -alist) can indicate starting and ending line and column numbers, either by supplying regexp match numbers or functions that return the respective line/column numbers when called. In other words, the integer N can be understood as a shorthand for the function (lambda () (and (match-beginning N) (string-to-number (match-string N)))) except that isn't true for the ending column where there is a difference of 1; an END-COL function returning 13 means that the error's last column is 12. There does not seem to be a good justification for this nor is it documented so it's probably just a bug; proposed patch attached below. Does it warrant a mention in etc/NEWS?