I have seen this before. My work around has been to put code in point to point in the configuration. Do not use circular interp it has always caused me grief. Especially when going around a full circular boss. If you are running full DNC point to point should not be an issue. I believe it has something to do with the way the kernel does the math on the full circle. Pro/e is famous for this even in part mode. I have seen it in patterning features in a circle, get just past the 180 degree point or approach 360 degree and boom your pattern fails in a number of different fashions. Never had a problem with code from point to point every move just a G1 xyz. Stay away from G01, G02, G41, G42 unless you can really check your code. Note this method is for roughing of large volumes of material when your program may become very large. Sometimes it makes good sense to use those codes when you are just doing a simple 2D profile on a part, a few hundred lines of code vs 10K lines of code on a large volume rough.
Another option if you have to use circular interp is to break your volume into two volumes. Half on each side of the boss. OR Don't let your volume go completely around the boss leave a little sliver out so the circle is not continuous.
The Haas machines I use have a feature that will allow dry run of code and you can watch it on the screen. Sometimes you could see where it would cut badly and other times it would show an error for machine overtravel. Either way it was not 100% that you were not going to scrap or break something but it was a quick check.
I know it is not perfect but it is best I can do.
Ron