I'm not sure if this goes under the category of a bug or a feature that could be improved, but the post review warning issue I raised in another bug report ( http://www.phpbb.com/bugs/phpbb3/52835 ) got me to thinking about a similar timing issue in connection with the way phpbb3 marks forums and topics read.
Imagine a user who looks at the list of topics on viewforum, isn't interested in any of the unread ones and therefore clicks to mark the forum read. But between the time the user opened up the viewforum page and the time he clicks to mark the forum read, another user has posted a new topic or reply in the forum that the first user would have been interested in. In that case, the first user may never see that new topic or reply because he has inadvertently marked it read.
It would be easy to solve this problem in a way analogous to the solution I suggested for the post review warning ( http://www.phpbb.com/bugs/phpbb3/52835 ): we could change each mark forum(s) unread or mark topics unread link that appears anywhere on the site (e.g. on index and viewforum) to pass the current time (as in effect when the user opened the page where the link appears) by adding '&time=xyz' and then we would have the function markread() (that appears in includes/functions.php) use that time (rather than time()) to determine what mark_time to use. (As in the post review warning solution, the solution comes at a cost of making the url the user sees a bit uglier.)
This may seem like it is fixing a problem that isn't likely to occur very open, but on boards where it is really important to be aware of every new post or reply I think it would be worth fixing. I have a board where I really need to be aware of all posts and replies, and as a result I never use the mark read feature even if I can tell by the topic titles that I can skip a bunch of posts, so I know this change would improve usability for me.