Well, that was confusing. When SMF reads the posts for anything but the last page of a topic, it starts from the index of the first post for that page (e.g. if there are 15 posts per page, for page 1 it starts from 0, for page 2 from 15, and so on)... but when viewing the last post of a topic, it takes the number of posts it thinks are in the topic, reverses the order, and asks for what are effectively the last
n posts for the topic starting from the end. If the total count for the topic is wrong (e.g. after a hardware failure when the database replicas have to be brought in line manually), it drops posts from the last page... but always keeps the final one, thus maximising confusion.
The lesson is... when there's a replication failure, after bringing the databases back in line, always tell the forum to recount all the posts in the all the topics
in all the world.