I'm not sure if this is by design or not, but if you display all messages in a thread or topic, they don't get marked as read. This means that the user either has to mark each individually as read, or choose the option from the top menu to do so.
"Marking a message as read" isn't a conscious action that most users are going to want to do, so when the full text of a message is displayed, regardless of whether that's in a topic view, thread view or message view, the message should get marked as read. It would then be reasonable to have an option to mark messages as unread which is the less common case.
This is a significant usability issue, which is going to impact on the usefulness of both the synoptic view (as the 'unread' count will be misleading as users will have read many messages but not bothered to mark them unread) and the statistics.