Normally, time periods such as market hours include their begin, but not their end. Bars are a special case because their timestamp is at their end. So they include the end, but not the begin. And if time periods are negative, such as the EUR/USD in your example, their begin and end are swapped, so you got the noshift at 20:00.

I must agree that this last point is not what you would normally expect, so we will change that. As to the other issues, I'm open for suggestions as long as they only affect the new beta features and don't break existing code.