When I said

I don't know the NNTP protocol very well, but it looks like the LISTGROUP command in the nntp_artnums() function can be replaced by the GROUP command with no ill effects.

I was mistaken. The first new message in the first group I read gets incorrectly marked as read. I can't figure out why, but I'm not a programmer. :(