The system is not well documented on my side, sorry.
It is: always base units and always forward, so:
- distance: to next command in meters
- time: *to next* command in seconds
- speed: average speed for the segment between current and next command (so simple distance/time) in meters/sec
In case, there is no speed or no time defined, app uses the average speed of the user from the last few seconds of activity.
When I was fixing the problem you wrote here, I had an idea to improve times by comparing expected time (returned from BRouter) with real-time user spend on the segment and modify then expected total time by this ... so task on some calm evening

.