The compensation needs to allow for tilt of the saddle as it moves along the bed. There is typically more wear on the front way than the rear, and this is (I believe) what causes the machined diameter to vary.
You could measure a parallel test bar with a dial indicator at various points along the bed, and use the "lincurve" component to calculate the required offset (and then add that on between motor-pos-cmd and and the input to the PID)