Changing tool diameter with a constant sequence of coordinates called up in a subroutine is how I do it. The one problem is as gar mentions if you make your 'fake' tool diameter for a roughing cutter larger than any concave radius in the sequence you will get an error The way I solve this is to copy the subroutine and take out the corner radii because my machine will do a square corner without complaint. Then I call the modified subroutine for tool diameters larger than the smallest concave radius.
An open mind is a virtue...so long as all the common sense has not leaked out.