I've never used cutter comp with my camsoft retro, so I have no idea how it behaves. But if I were attempting to troubleshoot the problem, I would try a couple of things:
-try using a G80 with the G40 and/or G90. I know, it sounds crazy, but G80 to camsoft has some strange powers to break modal behaviours.
-Try using G92 between calls to the sub, and stay in absolute mode. To do this in a controlled manner, I typically use a G53 command to move the machine in the machine coordinate system, then re-name that point with whatever values I want it to have using the G92.
-Check to see if camsoft has implemented a G52 coordinate system shift capability similar to Haas. This method would probably be the preferred method on a standard cnc controller, but if Camsoft has not implemented the logic to do it, then it won't work. G52 also allows you to program a subroutine in absolute mode and it will behave like an incremental chunk of code because you can move its origin around with G52. My G53/G92 combo method described above is similar to an implementation of G52.
One important distinction with camsoft, is that G92 does not irrevocably alter the machine coordinate system as may happen with standard cnc controllers. So you can always command a move in G53 to get back to a known position safely, then use G92 to set a new origin.
My experience relates to using camsoft with a 2 axis lathe system, so my advice may be a bit off.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)