Storm conditions in November 2021 in northern and north-eastern parts of the UK brought down powerlines in some areas, leaving many homes without electricity for several days.
British power companies, which, for better or worse, are privatised rather that state-run, are required to pay out compensation to customers who did not receive the service promised in their contract…
…and so the after-effects of Storm Arwen left Northern Powergrid, which serves electricity consumers in north-east England, with payouts to make.
“Storm season” in Ireland, the UK and The Netherlands officially starts in September each year, with severe storms referred to by names starting with a pre-arranged, multilingual list of names starting A, B, C, and so on (excluding Q, U, X, Y and Z). For 2021-2022, the list starts Arwen, Barra, Corrie; runs through Logan, Méabh, Nasim; and ends, if needed, with Tineke, Virgil and Willemien.
That’s a LOT of money
Let’s hope that the software code controlling Northern Powergrid’s power delivery has been reviewed and tested more thoroughly than the account compensation software that runs when power delivery fails.
That’s because the company recently issued some of the most astonishing refunds ever offered to customers anywhere.
Gareth Hughes, for example, tweeted about his recent payout:
Thank you for our compensation payment @Northpowergrid for the several days we were without power following #stormarwen Before I bank the cheque however, are you 100% certain you can afford this? #trillionpounds pic.twitter.com/z5MNc2Nxl1
— Gareth Hughes (@gh230277) February 12, 2022
Here’s a cropped image of the payment cheque itself, cleaned up and with perspective correction applied:
There are two obvious problems with the software that generated this cheque:
- The words and numbers don’t match. The software failed to notice that it had generated a textual version of the number that simply wouldn’t fit in the allowed space. (We assume, indeed, we hope, that receiving bank would invalidate the cheque on those grounds alone. If not, why bother demanding that both numbers and words be used on the document in the first place?
- The amount to be paid out is slightly larger than the annual GDP of the entire UK. The software failed to notice that it was generating a cheque that could not conceivably be cashed.
There’s a third exciting aspect to the software:
- There’s room for two more decimal digits, if needed. This mistake could therefore have been up to 430 times more serious, given that the upper limit on the cheque, which apparently has a pre-printed denomination in Pounds Sterling, is a tidy £999,999,999,999,999. (One quadrillion minus one.)
According to a report on the Guardian website, 74 customers received absurd payments of this sort, which Northern Powergrid blamed on software that consumed the customer’s meter ID (in Gareth Hughes’s case, apparently some sort of 13-digit serial number) instead of the compensation amount.
Whether that was down to a column mismatch in a hand-exported CSV file (we’ve all done it, though perhaps never quite as excitingly as this) created for the admittedly unusual circumstance of storm-related compensation, or a more fundamental software bug that could occur at other times…
…we have no idea.
Danger, Will Robinson
Things could have worse.
For example, if the misaligned column used as the payment amount had been “time of last meter reading” (e.g. 14:30), then customers might have received cheques for, say, £1430 (we expect the actual amount due would be in the low hundreds of pounds) and have cashed them in good faith, only to be chased to refund the amount later on.
Or a future bill could have had the numeric value of the last reading itself transposed into the amount due column, leaving customers whose meters showed, say, 493286, facing bills of £4932.86 that might leave them scrambling to prove they hadn’t used that much electricity in the past month.
But how do you prove a negative?
It would be fairly easy to show that you had been busily mining cryptocoins at full-tilt for several weeks, simply by producing blockchain entries to supprt your claim; or to demonstrate that you had, indeed, been growing high-quality hydroponic vegetables for the artisan vegan restaurant market, by showing invoices from the eateries concerned.
But if you’d been sitting quietly at home, using the energy consumed by a typical household for typical household purposes, how could you prove you hadn’t been doing any of those otherwise perfectly lawful things?
At least Northern Powergrid apologised to affected customers, thanked them for reporting the glitch, and promised to figure out what happened.
We’re interested to hear what went wrong: we hope the company shares its findings, because there’s probably something in the story from which we can all learn a lesson.
What to do?
In the meantime, our advice to programmers is:
- Validate your outputs, not just your inputs. In this case, of course, the blunder should have triggered error-detection code on the way in. But don’t just assume that if the input passed muster, the output must therefore pass muster too. If you have two chances of catching one mistake, take both of them!
- Don’t ignore warning signs. In this case the words came out longer than the maximum length allowed. Even if this cheque had been for a genuine amount, it shouldn’t have been printed anyway because it didn’t match its own specifications.
- Test special-case code, if you have any, at least as well as everything else. The fact that this blunder seems to have been limited to just a few customers suggests that an unusual or little-used process may have been invoked (severe storm damage is, thankfully, quite rare in the UK).
Oh, and if you do receive a payout from a company you do business with that is more than you expected, don’t be in too much of a hurry to spend it.
In this case, the error was fortunately both obvious and amusing…
….but if an overpayment is by hundreds or thousands instead of billions or trillions, it’s still not automatically yours.
You’re very likely to have to pay it back unless you can show that you were reasonably expecting the amount at the time you received it, and thus that you were reasonable to assume it was yours.