If I understand your issue correctly, it is one I face quite a bit too.
I've made a habit of putting a script trigger "OnCommit" that simply refreshes the window...this has worked in all of my cases so far.
That did the trick.
If possible make the resulting field unstored. You would not need a trigger then.
FWIW, I find that if some of the data being used is two tables away, it does not update even if it is unstored.
I set a value through a portal that contains a field two tables away from the TO that the layout is based on, and sometimes it updates, sometimes not.
I mentioned it to Matt and a few others back in Devcon 2012 and we replicated it together right there on site.
The "refresh window" forces the recalc...I guess that if the data is far enough away, the trigger is not there to recalc...