I tried to get the behaviour in all the different places reasonably consistent, but unfortunately, the internal design isn't conducive to simple fixes or tweaks. Your code looks "non-ideal", but with the easy offset-control solution, I'd be reluctant to try and look at that hairy code again!