Info.BearingFromStart not populate during Course Routing

I just released a new datafield called Windy Indicator.  It works great, but I'm confused on a few concepts below.  Hopefully everyone here can help expalin a few quirks that I don't understand about the navigation API.

First, I'm trying to determine which side of the course I'm off-track.  I'm currently calculating this myself based on the Info.BearingFromStart.  Is there a built-in way within the API to make this determination?

Second, when navigating a Direct Course and the routing type is set to Course, Info.BearingFromStart is null or not populated. It works perfectly when the routing type is set to Bearing. Can anyone explain why this is the case?  Even though I'm routing via a course, shouldn't there still be a bearing from the starting location?  Is there an alternative that would give me the BearingFromStart other than collecting the Bearing at the beginning of the activity?

Thanks,

John