Right now, we're marking 'seen' notifications according to a timestamp of when the user last looked at their list. However, this is potentially very problematic.
For one, if a user has 100 notifications, their list will only show 25 or so - but the 'seen' timestamp will be updated to the moment they opened their notification popup - which will make all 100 notifications "seen", instead of just the 25 the user has actually seen. When the user then goes to Special:Notifications, all items are seen including the 75 that the user really hadn't seen before.
This is a wrong behavior. We should really make 'seen' a flag, like 'read' is, and mark notifications as seen specifically when the user actually sees them.