article
Datum Shift and Bonus Tolerance: How Much Positional Budget Do You Really Have?
A 0.02 position callout at MMC can really give you 0.05. How stated tolerance, bonus, and datum shift add up - and when not to trust the sum.
Published Jun 12, 2026
A position callout of ⌀0.02 at MMC rarely means you only have 0.02 to work with. When the feature departs from MMC you earn bonus tolerance, and when the datum feature itself is referenced at MMC, the whole pattern can float by the datum shift. Added together, the usable budget can be two or three times the stated number. This article explains the quick budget check behind the Datum Shift module in the enggtools.in Tolerance Stackup tool.
The three pieces of the budget
1. Stated tolerance. The diameter of the position zone printed in the feature control frame — available no matter what.
2. Bonus tolerance. When a feature of size is toleranced at MMC, every bit of departure from MMC size opens the zone by the same amount: bonus = |actual size − MMC size|. A ⌀0.51 hole with an MMC of ⌀0.50 earns 0.01 of bonus. At LMC callouts the logic mirrors: departure from LMC earns the bonus.
3. Datum shift. When the datum feature is a hole or pin referenced at MMC (the circled-M after the datum letter), the gauge pin or gauge hole is fixed at the datum's virtual condition. As the actual datum feature departs from that size, the part can shift on the gauge. The maximum shift equals the datum feature's size tolerance — its upper deviation minus its lower deviation. Unlike bonus, datum shift moves the whole pattern together; it does not open each zone independently. Using it as additive budget is therefore a quick screening check, valid when the pattern error is dominated by a common offset.
Sign convention: lower deviation is always negative
The datum feature's size tolerance is computed from its two deviations. In the enggtools.in module, the lower deviation is always applied as negative regardless of the sign you type. A datum hole of ⌀0.5 +0.01/−0.01 can be entered as 0.01 and 0.01 — the module still computes the full 0.02 size tolerance instead of collapsing it to zero. This removes the most common data-entry error in this calculation.
The check
Available budget = stated tolerance + bonus + datum shift
Margin = available budget − required pattern EBT
The required pattern EBT (equivalent bilateral tolerance) is the positional error your pattern actually needs — from a stackup, a CMM report, or a supplier capability study. A non-negative margin means the pattern requirement fits inside the budget.
Worked example
Datum hole B: ⌀0.5 +0.01/−0.01, referenced at MMC → datum shift = 0.02. Pattern holes: position ⌀0.02 at MMC, MMC size ⌀0.50, actual size ⌀0.51 → bonus = 0.01. Required pattern EBT: 0.025.
Available budget = 0.02 + 0.01 + 0.02 = 0.05. Margin = 0.05 − 0.025 = +0.025 → WITHIN BUDGET. The pattern requirement consumes only half the available budget, so the drawing tolerances are comfortable — or, viewed from the other side, there is room to tighten the stated tolerance if a mating part needs it.
When to be careful
Remember the two caveats. Bonus applies per feature, so different holes in the pattern can earn different bonuses — the check uses one representative size. And datum shift is a rigid-body allowance: if your pattern error is random hole-to-hole scatter rather than a common shift, do not count the full datum shift as usable budget. For release-grade GD&T analysis, follow up with a full ASME Y14.5 gauge study; for everyday "do I have room?" questions, the budget check answers in seconds.
Check your own callout in the free Tolerance Stackup tool on enggtools.in — enter the datum limits, pattern tolerance, and feature sizes, and read the margin directly.