Register · Till · QA

A typed zero added one, and the till said nothing

Type 0 then tap a dish and the till added one. A seventh digit vanished. 150% off took the whole bill. Three silent clamps, now three sentences.


Three rows in the tester’s report were the same fault wearing different clothes. On the till, type a quantity of 0 and then tap a dish: one was added. Type a quantity too long for the keypad: the extra digit disappeared and the number you saw was not the number you typed. Set a discount of 150 percent: the till took the whole bill off and printed 150% off on the receipt. None of these crashed. All three did something sensible-looking in silence, which is the worst kind of wrong on a screen somebody is operating at speed.

Clamping without saying so

Each had the same shape underneath. Somewhere the code took a number it did not like and quietly replaced it with one it did. A quantity below one became one. A buffer at its limit dropped the keystroke. A percentage over a hundred was applied as a hundred and labelled as what was typed. Each clamp was defensible on its own: nobody wants a negative quantity or a seven-digit price. But a clamp that does not announce itself is a lie about what just happened, and on a till the person reading the screen is the person who will be asked about the receipt later.

Three sentences

The limits stay. The silence goes. A quantity of 0 now adds nothing and says so: a quantity of 0 adds nothing, type 1 or more, then tap the item. The keypad still stops at three digits for a quantity, and says up to 999 of one item when a fourth arrives; the same cap on an amount says it is as long as an amount gets. A percentage discount stops at 100, because a discount is at most the whole bill, and the receipt prints what was actually applied. The same pass gave the discount and its removal a toast each, so a tap on a discount chip is answered on the screen rather than only in the total.

Why this is a rule and not a fix

The product carries a short list of feedback rules, and the first of them is that a failure explains how to fix it. A clamp is a failure the code decided to hide, and hiding it violates the rule just as surely as an unhandled error would, only quieter. So the test for each of these is not that the clamp holds, which it always did, but that the sentence appears. We drove the typed zero, the fourth digit and the oversized percentage through the real till before release. The limits are unchanged. What changed is that the till now admits to them.


Try it on tonight’s service.

Nothing to install, no card. Not better by the weekend? Close the tab.


This is about the register — see how it works.