2. fetchlimit was set to be less than the number of messages in the remote mailbox, and
3. The remote mailbox stayed above this limit,
then you would find yourself in a state where fetchmail would say that it had fetched everything while there were unread messages that it would never look at.
Looking for a bug report just now, I didn't see anything that matched this.
I don't know about lost messages, but it used to bomb out on spam, but still deliver the messages up to the spam. So I would wake up with 5,000 duplicate messages and a lot that were never gotten, and i'd have to use a client to delete whatever seemed like the "bad" message until fetchmail could continue delivering mail and finally delete the old ones.
To solve it I did what any bored Perl programmer would do - write my own fetchmail program in a couple hours in Perl. It solved my issues and i've been using it ever since. Years later it took me about an hour to add SSL IMAP support so I could use it on Gmail and Exchange.