"I programmed it straight off the print, but the taper is out of size." "The radius looks slightly wrong." Almost everyone who starts on a CNC lathe hits this wall once.

Most of the time the cause is the tool nose radius. This article walks through what nose radius compensation actually does and how to deal with it, starting from why the error happens in the first place.

The point the program follows (the red cross — the theoretical tool tip) and the arc that is actually cutting are in different places.
Rounding the 45° chamfer, at half speed. The red line is where the cross has been — that line is the contour on the print. Closing that gap is what nose radius compensation is about.
LATHE-NC 3D simulation (1.0 mm nose radius, compensated, viewed square on) | → Try it (free beta)

The nose radius — your insert does not cut at a point

Look closely at the cutting corner of a turning insert and it is not a sharp point. It is a small arc. The radius of that arc is the nose radius. On general OD inserts, 0.4 mm and 0.8 mm are the common sizes.

Nose radiusTypical use
0.2 mmPrecision work, small parts, where you need a sharp corner
0.4 mmThe standard finishing choice. A good balance
0.8 mmRoughing to semi-finish. Stronger corner, takes more feed
1.2 mm and upHeavy cuts, roughing castings

The catch is that the coordinates in your program are not measured from anywhere on that arc. They are measured from the theoretical tool tip, a point that does not physically exist. It is the imaginary corner you get by drawing tangents to the nose arc in Z and in X and taking where they cross.

KEY POINT

The machine drives the theoretical tip along the line on your print. What is actually removing metal is the nose arc. The gap between those two things is exactly where nose radius error comes from.

Programmed point → compensated: 45° taper, 0.8 mm nose radius Where the corner you programmed at the theoretical tip actually ends up ④ Offset 0.469 × 2 = 0.937 ① Programmed ② Compensated ③ Compensated tip path ⑤ X is a diameter value. The tool shifts 0.469 on radius, so the coordinate moves 0.937. Part profile As programmed Compensated path
The corner you programmed at the theoretical tip (①) is replaced by the compensated point (②). On a 45° taper with a 0.8 mm nose radius the shift is 0.469 mm on radius, which is 0.937 mm in X because X is a diameter value.

Why faces and straight diameters are fine, but tapers and radii are not

Faces and straight ODs have no error

When you are facing, or turning a straight diameter, the nose arc sits tangent to the surface you are cutting. The theoretical tip and the finished surface line up, so the part comes out on size with no compensation at all. That is why you can run stepped shafts for months and never notice the nose radius exists.

Tapers and arcs leave stock, or gouge

The trouble starts on a taper or an arc. The theoretical tip follows the line on the print, but the nose arc touches somewhere else. The result:

This is the classic "the program is right but the size is wrong" situation.

How big is the error, really

The error peaks on a 45° taper, where it works out to nose radius × 0.586 (that is 1 − 1/√2). Put real numbers on it and it is clearly not something you can ignore.

Nose radiusOffset on a 45° taper (one side, on radius)
0.2 mmabout 0.12 mm
0.4 mmabout 0.23 mm
0.8 mmabout 0.47 mm
1.2 mmabout 0.70 mm

Even with a 0.4 mm insert, a 45° taper is out by 0.23 mm on radius. On a part held to ±0.05 that is nowhere close. If you have ever looked at a chamfer and thought it seemed a bit small, this is what you were looking at.

Option 1: use G41/G42

The control has a function that corrects this for you. It is tool nose radius compensation, called up with G41 and G42.

CodeWhat it does
G41Offsets the tool to the left of the direction of travel
G42Offsets the tool to the right of travel (the usual one for OD work)
G40Cancels compensation

Putting G41/G42 in the program is only half of it. You also have to enter two things on the tool offset page.

  1. The nose radius (0.4, for example)
  2. The tip orientation number — a number from 1 to 9 saying which way the cutting corner faces. Typically 3 for OD tools and 2 for ID tools
(OD finish pass)
G50 S2000
G96 S180 M03
T0101              (finishing tool, call the offset)
G00 X52.0 Z5.0 M08
G42 G01 Z0 F0.15   (lead in with compensation on)
X20.0
Z-25.0
X40.0 Z-45.0       (the taper now finishes on size)
Z-60.0
G40 U2.0 W1.0      (cancel as you pull away)
G00 X150.0 Z100.0
M30

Where people get caught out with G41/G42

Option 2: work the coordinates out by hand

The old way is to calculate the taper start and end points with trigonometry and put the shifted numbers straight into the program. For a plain chamfer there is the shop trick of simply adding the nose radius onto the chamfer size.

The problem is that you have to redo the maths every time you change tools, and once arcs are involved it gets genuinely tedious. It is also a good way to make a quiet mistake, so I would not recommend it to anyone learning.

Option 3: let CAM deal with it

The third option is to hand the whole path calculation to CAM. CAM knows the nose radius of the tool before it works out the toolpath, so the G-code that comes out is already compensated. No deciding where to lead G41/G42 in, no wrong tip orientation number.

STRAIGHT TALK

Nose radius compensation is something you should understand. I do not think it is something you should have to do by hand every time. Know how it works, then let the tool handle the daily arithmetic. That is the way with the fewest mistakes, and it is faster.

LATHE-NC, the lathe CAM that runs in your browser, was built on exactly that idea. All you do is pick the tool you are running. LATHE-NC works out the nose radius compensation and outputs G-code that finishes tapers and radii on size.

Pick the tool and the compensated path appears — then play it through in 3D to see how it touches.
→ Try it (free beta)

Summary

Stop thinking about nose radius compensation.

LATHE-NC runs in your browser. Pick the tool and it outputs compensated G-code.
The beta is free for the first 100 users.