Currently, time threshold values that are used to determine whether or not an estimated arrival time is displayed to the user is hard-coded, or must be defined as a parameter in a REST API request.
Show any bus whose predicted OR scheduled arrival/departure time is greater than or equals to (NOW - minutes before).
So the reason you saw a bus with a -8 is because it actually left 5 minutes early and was originally scheduled to leave just three minutes ago, which is within the 5 minute threshold.
A bit confusing, but the idea is that if your bus left early (5 minutes early is pretty early!) we didn't want to just show nothing in the UI, thus we considered both predicted and scheduled time when deciding to show something in the UI.
For what it's worth, this is configurable but probably not in the way that'd be immediately useful to you. You can specify a minutesBefore=X parameter to control how far into the past we look for buses that have already departed:
This threshold should be easily configurable for an entire OBA instance via data-sources.xml file, instead of being hard coded. We can also keep the ability to change this value via the REST API parameter, for backwards compatibility.
Currently, time threshold values that are used to determine whether or not an estimated arrival time is displayed to the user is hard-coded, or must be defined as a parameter in a REST API request.
Here's the current logic, per Brian Ferris (see https://groups.google.com/d/msg/onebusaway-developers/pVxORUgLhe0/GBZx54MsB4AJ):
This threshold should be easily configurable for an entire OBA instance via data-sources.xml file, instead of being hard coded. We can also keep the ability to change this value via the REST API parameter, for backwards compatibility.
Full conversation is on OBA Dev list here:
https://groups.google.com/d/msg/onebusaway-developers/pVxORUgLhe0/VK5GWCdCLEwJ