That definitely was a solution, but not quite satisfactory. The final tempo never ended up at exact PBM; lets say if I want change tempo from 110 to 120, it's always around 120, like 119.88 or 120.55 - something like this. And second, you can offset tempo of the whole song only, not a part of it.
I played around with this a little, and found that if you use SMPTE times, the "quantization" effect of the low frame rate can cause tempo rounding errors of up to about .03BPM for typical tempos around 100BPM, and short song lengths of a minute or so. If his calculator produces errors greater than that, he's got a problem with his code.
In any case, I did a quick spreadsheet calculator that uses M:B:T values, and produces no errors within the two digit resolution of Sonar's tempo settings, even if you run at only 48PPQ.
Also I tried it on a middle section of a project, and it worked fine. I don't really want to take the time to convert this to an applet, but I'd be glad to share the Excel file. I'm not sure where is the best place to do that. Let me know if you're interested, and we'll figure it out. Or I can just email it.
If you want to try a test case, give me your clock rate (PPQ), meter, the existing tempo, the target tempo, starting M:B:T, and ending M:B:T, and I'll give you the new ending M:B:T.