An assembly of a shaft, three spacers, and a retaining ring. The shaft is 100 mm long, the spacers are 30, 20, and 15 mm, and the ring groove leaves a gap that must end up between 0.5 and 1.0 mm. The parts were machined to print. Every part measured within tolerance. But the gap came out 0.2 mm on one assembly and 1.6 mm on another. Same part numbers, same batch, same machinist. The parts were fine. The tolerance budget on the drawing was the problem.
This is the classic stack-up failure, and it shows up in every machine shop at some point. The individual tolerances look reasonable. The sum of them, in the wrong direction, is not.
The arithmetic that everyone skips
The gap equals the shaft length minus the sum of the spacers, minus the ring width, adjusted by where the ring sits in its groove. Each dimension carries a tolerance. Worst case, every part at its extreme in the bad direction at once:
Gap_max = Shaft_max – (Spacer1_min + Spacer2_min + Spacer3_min) – Ring_min
Gap_min = Shaft_min – (Spacer1_max + Spacer2_max + Spacer3_max) – Ring_max
On this drawing: shaft 100 ±0.1, spacers 30/20/15 each ±0.05, ring groove position ±0.1, ring width ±0.05. The worst-case gap range came to about 1.4 mm. The spec wanted 0.5 mm of range. The worst-case stack-up alone said the design couldn’t hold its own requirement. No machining accuracy was going to fix that.
Worst case sums every tolerance as if all parts hit their limit at once. It’s the honest, safe calculation, and it is also brutally unforgiving. For three or four parts it’s usually still fine. For ten parts it’s often impossible, and the drawing ends up with tolerances tighter than the shop can hold.
Statistical stack-up, and why it worked here
Statistical stack-up (RSS, root-sum-square) assumes the variations are independent and normally distributed. The stack standard deviation is the square root of the sum of the squares of the individual standard deviations, and the range for a chosen confidence is about ±3 sigma of that.
RSS = √(σ1² + σ2² + … + σn²)
Converting each tolerance to sigma (tolerance / 3), the RSS range for this assembly was about 0.55 mm — inside the 0.5 to 1.0 gap window with margin. The design was actually achievable, as long as the parts were produced by a process with stable variation, which this CNC shop was.
The gap measured 0.2 on one assembly though. That outlier told us something. The machinist had produced a batch where the shaft was all at the low end and the spacers all at the high end — a setup shift, not random variation. RSS assumes independence. When one setup cuts all three spacers from the same bar in the same operation, their errors are correlated, not independent. Correlated variation is the silent killer of statistical stack-up.
What we changed
Two things. First, the spacer tolerances were loosened to ±0.1 and the shaft length tolerance was tightened to ±0.05, which costs nothing extra on a CNC lathe with a controlled datum. This rebalanced the budget toward the dimension that was cheap to hold. Second, and more important, the design now cuts all three spacers from one bar in one setup, then documents that the spacers must be used as a matched set. The correlated error became the design’s friend instead of its enemy, because the spacers stack consistently.
The retained ring approach had a second issue: the ring sits in a groove, and the groove position tolerance is a locating error that adds directly. We switched the design to a threaded collar with a locknut. The collar position is adjustable, so the gap requirement became a setting, not a stack-up. The gap now lands between 0.6 and 0.8 mm every time, set with a feeler gauge on the first assembly and left alone.
When to use which
Worst case when: the assembly must work with every part at its limits, the parts come from different suppliers with no process control over them, or the consequence of a mismatch is a failure, not a rework. Safety-critical stacks get worst case.
Statistical when: you have a real process with measured variation, the parts are made in controlled batches, and a small percentage of assemblies can be reworked or selected. RSS saves money on tolerances, but it borrows against process control.
The rule that has served us well: if you can’t show the process capability data for the parts, use worst case. If you can, RSS with a 4-sigma budget and a matched-set note on the drawing. And if the assembly lets you adjust something, adjust it — a set-screw, a shim, a threaded collar — and stop fighting the stack-up entirely.
The gap that went from 0.2 to 1.6 mm wasn’t a machining failure. It was a tolerance budget that summed up to more than the design could absorb. Worst case if you can’t prove the process. RSS if you can. Adjustable if you can design it. The cheapest tolerance is the one you design out of the stack.