How can I create an accurate cam?

We created a cam by generating points in Excel.

The points are then used to create a XYZ curve.

This is extruded to an initial plank.

A circular cutter is drawn with the center on the curve.

A sweep of the cutter creates the cam.

We have a problem with the accuracy of this process.

A 40mm dia cutter cuts 19.9877.  The interesting thing is it's not a consistent error.

I've simplified the process using a circle as a path and a circle as a blank.

The resaulting body shows a similar inconsistent error.  The final body isn't round.

What should the process be?

Will we ever be able to machine a cam from a SW file?

SolidworksParts And Features