If your lathe takes a cut exactly twice as deep as you programmed, stop inspecting the tool, the inserts, and the workholding. An error of precisely 2x is not mechanical. It is the X diameter rule biting you: the control treats every X value as a diameter while some link in your chain, the CAM post, the offset page, or your own head, is thinking in radius.

Why exactly twice? Because X is a diameter

Turning is the one machining process where the dimension everyone measures is a diameter, so lathe controls were built to speak diameter natively. On a diameter-programmed control, X50.0 does not mean 50 mm from the spindle centerline. It means: put the cutting edge where the finished diameter will be 50 mm, which is 25 mm from center. The control halves the value internally so that the X words in your program match the numbers on the print and on your micrometer.

That convenience has one failure mode. If any part of your process supplies per-side values, every depth doubles, because the control divides a number that was already a radius. The error is always a clean factor of two, which is the diagnostic gift: random mechanical problems produce random errors, and the diameter mix-up produces exactly 2x, every feature, every pass.

LinuxCNC documents the two conventions explicitly in its lathe user notes, with G7 selecting diameter mode and G8 selecting radius mode, and most industrial controls bury the same choice in a setup parameter. The mode is real, it is switchable on many machines, and nobody tells you which one is active by looking at the program.

The four places the mix-up hides

Where it hidesThe mistakeThe signatureThe check
Control modeA radius-mode program running on a diameter-mode control, or the reverseEvery feature wrong by exactly 2xConfirm G7/G8 or the control’s diameter parameter before blaming the code
CAM post processorThe lathe post is set to radius output for a diameter machineThe whole program is scaled in X, Z is perfectCompare the first finished-diameter X word in the file against the print
MDI math at the keyboardThinking per side while typing a diameter wordManual cuts go twice as deep as plannedSay it out loud: to remove 1 mm per side, X must drop by 2 mm
Wear offset entryEntering a per-side correction into a diameter offset fieldParts drift by double the intended compOn diameter controls the X offset field is a diameter value

Work the table top to bottom. The control mode check takes one minute and clears the biggest suspect; the CAM post check matters most when the problem appeared with a new post processor or a new machine; the last two rows are human habits, and they follow people from machine to machine for years.

U words and incremental moves obey the same rule

On Fanuc-style lathe controls that use U as the incremental X word, U is a diameter value too. U-1.0 closes the diameter by 1.0 mm, which moves the tool 0.5 mm toward center. Operators who learned incremental moves on a mill, where every axis word is literally the distance the axis travels, find this the hardest version of the rule to internalize, because the axis visibly moves half of what they typed. It is not slippage. It is the same convention, applied consistently.

The consistency is the good news: once you accept that every X-family number on the machine speaks diameter, the program, the offsets, the DRO position readout, and the print all agree with each other, which is the entire reason the convention exists.

Prove it before the next cut

Do not fix a factor-of-two error by editing values until the part measures right. Find which row of the table you are in, fix that, and verify the old way: dry-run the program in a simulator that respects lathe conventions, then run the first part in single block with your hand near hold, and measure after the first pass rather than the last. A lathe gives you the diameter check for free: one caliper squeeze after the first cleanup pass tells you whether the world is diameter-shaped or radius-shaped today.

If the program also mixes up which axis is which, that is its own classic confusion with its own fix, covered in how to stop mixing up X and Z on a lathe.

Make the rule a reflex, not a calculation

The machinists who never cut twice as deep are not doing arithmetic at the keyboard. The X-is-a-diameter rule sits in recall for them, the same way taper math and the lathe versus mill code differences do, and recall is trainable. Five minutes a day of question-and-answer drilling on the G-code practice page installs the convention faster than any number of scrapped parts, and the free G-Code Sprint app runs that loop in 60-second rounds that keep returning to whatever you miss.

Sources

Frequently asked questions

Why is my CNC lathe cutting twice as deep as programmed?

Because the control reads X values as diameters and something in your chain is treating them as radii. Most lathe controls run diameter programming, so a move you calculated per side removes twice the material you expected. Check the control’s diameter or radius mode, the CAM post’s lathe output setting, and your own MDI math.

Is X in a lathe program a diameter or a radius?

On most production lathe controls X is a diameter: X50.0 positions the tool to cut a 50 mm diameter. Some controls can be switched to radius mode, and LinuxCNC exposes the choice as G7 for diameter and G8 for radius, so confirm which mode your machine runs before trusting any X value.

Do lathe wear offsets work in diameter or radius?

On diameter-programmed controls the X wear offset is a diameter value too: entering 0.4 changes the cut diameter by 0.4, which is 0.2 per side. Entering per-side values into a diameter offset field doubles your correction.

What is the best app to practice lathe G-code rules like diameter mode?

G-Code Sprint is the top pick for drilling lathe conventions into recall: free 60-second rounds on G-codes and M-codes that repeat your misses until the X-is-a-diameter reflex is automatic. It is a practice tool, not a simulator, which is exactly the half of the problem simulators leave open.