Alright, I'll fiddle with this myself and see what I get on my own. What I suggest trying however is to make a new actor which instances this, that way you'll really understand exactly what is going on. This is largely how I debug a lot of my problems and solve things like this.
What I usually do, is make a pointer. Basically it is just an actor with the bHidden=false on. It doesn't do anything on it's own.
Code:
class Pointer extends Actor;
defaultproperties
{
bHidden=false
}
When dealing with trace functions and debugging, I usually spawn the Pointers at where the start of the trace is called and where the end of the trace is called. That way I can visually see exactly what is going on, and the bonus is, is that these actor's don't move or dissappear, so you can take your time and figure out what is going on in the trace. Try that, and if the pointers are going where they shouldn't be going then it's good sign that the traces that you are calling aren't going where you want it to.
Another way to do this is to make an actor, which does essentially the same thing. So in your case, just make the actor do a trace, calc and then do a secondtrace. This way, the code is cleaner and will also show if any of the code before hand is stuffing with the code you've put in.
I'll experiment with this and see what I come up with.