34

In the era before UK currency was decimal, how were accounting calculations involving pounds, shillings, and pence typically handled?

Were the underlying computations typically performed in terms of decimal fractions of pounds, in binary or decimal integer multiples of pence (or farthings!), or by keeping track of pounds, shillings, and pence as binary or decimal integers?

My research so far has only found one useful reference, and IBM System 360 Cobol specification that seems to say that computations were performed in pence and then output in pounds, shillings, and pence with a special formatting "PICTURE" See pages 117-118 at

https://www.computinghistory.org.uk/downloads/10924

21
  • 13
    I suspect you answered the question yourself.
    – UncleBod
    Commented Oct 4, 2023 at 5:07
  • 15
    Doing it in pence would make sense, given that, throughout history, the pence was always the base unit that all other coins were valued as multiples of as they came and went. Sort of like how POSIX time calculates in seconds since the epoch and then just figures out the larger units at time of display.
    – ssokolow
    Commented Oct 4, 2023 at 6:40
  • 12
    @Lorraine 12 pennies to a shilling, 20 shillings to a pound. Not exactly a base-ten system. (They also had a quarter and half penny and a 21 shilling Guinea.)
    – UncleBod
    Commented Oct 4, 2023 at 9:23
  • 6
    @UncleBod Of course, £sd is not base-ten. But as OP was asking about "the era before UK currency was decimal", I wondered if he thinks decimalisation changed something such that base conversion is not necessary and normal today. Commented Oct 4, 2023 at 9:42
  • 9
    KDF9 had instructions to handle mixed-radix conversions, see my comment to Raffzahn's answer. But mixed-radix is not so unusual even today: hh:mm:ss.
    – dave
    Commented Oct 4, 2023 at 13:10

5 Answers 5

32

In the era before UK currency was decimal, how were accounting calculations involving pounds, shillings, and pence typically handled?

By mostly the same machinery as in other countries - only some sprockets added like this nice Brunsviga 90T shows:

enter image description here

(From Wikipedia, see also this answer)

It may need a close look at display and key columns as the last column goes 1 to 11, while the third from the right only features the number 1 on all keys.

British Pre-Decimal currency was, like all Carolingian currency, structured as LSD or 1 Librae (hence the £) to be split into 20 Solidi (s) each dividable into 12 Denari (d) or in English names 1 Pound equals 20 Shillings equals 240 Pence.

This is why the display, as well, is structured as 3-3-2-1:

  • 3 digits for Thousands of Pounds,
  • 3 digits for Pounds,
  • 2 digits for Shillings (00..19), and
  • 1 'digit' for Pence (0..11)

Such variant machinery was as well created with early data processing like IBM's 1934 type 801 (*1) check proof machine, available as well in a Sterling version (*2).

IBM type 803

(803 in operation, taken from this blog)

Of course there were as well electronic LSD calculators. A great example might be the Anita Mark 10 which in addition could convert between LSD and decimal.

Were the underlying computations typically performed in terms of decimal fractions of pounds, in binary or decimal integer multiples of pence (or farthings!),

No, no Farthings and no Guineas (*3) either. Bookkeeping was only done in Pounds, Shillings and Pence. When recording of Farthings was required, they were done as fractional Pence, like 11¾p (*4). That's also the reason why the linked COBOL manual reminds users to take care of possible fractional pence - something that comes to be if Farthings are handled.

or by keeping track of pounds, shillings, and pence as binary or decimal integers?

Yes - all of them. In the end it depends as much on application as on hardware (and language runtime). Converting everything to pence and converting back for display and output purpose was as common as having three dedicated fields handled separat - or with some computers it was possible to handle a dedicated sterling data type, often a variant of the decimal (BCD) type but handling carry accordingly to LSD structure (*5). This includes modified micro programs for standard mainframes.

The most well known example with hardware operating on LSD might be 1960s ICT 1300 series.

enter image description here (From Wikipedia)

Another interesting example is shown by the English Electric Deuce series:

enter image description here (From Wikipedia *6)

While not operating directly on LSD, it could execute complex divisions and multiplications with insertion and removal of elements during operation, a feature that allowed conversion between LSD and Pence (and back) in a single assembly instruction. Somewhat similar to a PACK/UNPACK operation for converting EBCDIC or ASCII to BCD. In fact, that operation is so unusual that it might as well have been created especially for that purpose.

My research so far has only found one useful reference, and IBM System 360 Cobol specification that seems to say that computations were performed in pence and then output in pounds, shillings, and pence with a special formatting "PICTURE" See pages 117-118 at

Not sure. To me this reads as if done by using dedicated decimal field for each unit.


*1 - No, that's not the 801 processor, the father of all RISC. IBM did reuse the number :))

*2 - Interesting side note, the follow up 803 was sold all the way until 1981 - about the time when even the slowest moving US bank would switch to digital handling

*3 - Guineas were as well not recorded as such, but as one pound and one shilling or 21 shillings (Equivalent to £1.05 in decimal notation).

*4 - 11 Pence and 3 Farthings was the Victorian equivalent of today's 9.95 pricing - a Farthing short of a Shilling to make it look less.

*5 - This is especially true with early 18/36 bit machines using 6 bit characters. Here BCD arithmetic was often done using one digit per 6 bit char, which directly corresponds how punch cards (the most common source for data) were read. This allowed to hold pence (0..11) as well as shilling (0..19) as a single 'BCD' digit - which in turn directly corresponds to the way the GB standard (BSI) encoding for Sterling on punch card was done. Nicely mentioned on p.114 of the linked document.

*6 - What a massive beauty - that's what a real computer has to look like :))

15
  • 5
    I actually have a 1956 Brunsviga 94T, which is an insanely complex piece of mechanical engineering. Commented Oct 4, 2023 at 12:54
  • 7
    The KDF9 had text-to-binary (TOB) and binary-to-text (FRB) instructions that could be used to convert between pence and £sd. The same instructions could be used to convert seconds to hh:mm:ss. The essential detail is that a different radix can be used for each digit position.
    – dave
    Commented Oct 4, 2023 at 13:07
  • 2
    My experience was that the KDF9 was a 1/3rd supercomputer, later fallen on hard times as it aged, and given as a hand-me-down to undergraduates who were nevertheless grateful, since access to computers was still a privilege :-)
    – dave
    Commented Oct 4, 2023 at 22:13
  • 3
    "LSD"!? I always thought they must have been high on something! Commented Oct 6, 2023 at 15:05
  • 3
    @Peter-ReinstateMonica: Well, since the system stayed in use until 1971, it was possible for a British person to use both types of LSD.
    – dan04
    Commented Oct 6, 2023 at 16:58
15

I started my first job programming in 1979, eight years after decimalization, at a major UK bank. I remember someone telling me that they did everything in pence because that was how it was done in LSD days

8
  • 12
    This is anecdotal, but it would be a very practical way to solve the problem for computations and the like, while input/output just takes a little arithmetic.
    – Matt Lacey
    Commented Oct 4, 2023 at 8:41
  • 15
    A legend I've heard is that one British bank accidentally printed their statements in LSD in January 2000, because their software had long-dormant logic to use this format "IF YEAR < 71".
    – dan04
    Commented Oct 4, 2023 at 16:38
  • 8
    Even today, with decimal currencies like pounds or dollars, financial calculations are commonly done in integer units: cents or some fixed fraction of a cent. We avoid floating point at all costs, because it introduces unnecessary uncertainty around rounding. For financial calculations, it's much more important that the numbers balance correctly than that they be accurate to multiple decimal places. (You likely won't notice if your bank pays you one cent less interest than you're owed, but you might notice if your previous total plus the interest deposit doesn't equal your new total.) Commented Oct 4, 2023 at 16:54
  • 6
    It's of course also how we deal with time today - everything is calculated using seconds even when it's always converted to HH:MM:SS for presentation.
    – pipe
    Commented Oct 4, 2023 at 22:07
  • 9
    I worked at British Rail Payroll from 1993-1996. We had started some Y2k tests already. One caused the output to go 3 column, which confused half of us until an older guy walked past, glanced, and said "LSD". Of course! So I do believe the banking rumour is entirely possible, but as mmmm says, more likely in testing.
    – kpollock
    Commented Oct 5, 2023 at 7:57
9

As you acknowledge in your question, IBM's implementation of COBOL had special PICTURE clauses to represent £sd. So did PL/I.

There is also a L suffix for pre-decimalisation British currency where the elements designate pounds, shillings and pence. This is converted into pence for storage.

TEST: PROCEDURE OPTIONS(MAIN);
  DECLARE AMT FIXED BINARY(16);
  AMT = 1.5.2L;
  PUT FILE (SCARDS) LIST(AMT);
END TEST;

Another approach, which doesn't require having built-in language support, is to store monetary amounts as an integer multiple of the smallest unit. For modern decimal currency (Pound, Dollar, or Euro), this means 1/100ths, but for £sd you could just store pennies (1/240ths of a pound). (Or farthings (1/960th of a pound) if you wanted to handle historical calculations from before the farthing and halfpenny were discontinued.) In a modern programming language, this can be done with a class defining overloaded operators for arithmetic, and functions for formatting and conversions to/from decimal currency.

9

I was writing programs for small computers prior to decimalisation. No customers were interested in recording halfpennies or farthings in their accounting so just had to keep all the records in old pence internally. Just needed a conversion when displaying the final output in £sd, and of course on the keyboard input as well.

After decimalisation can remember that most customers had new pence as their base unit but a few wanted to take into account new halfpennies. They were nearly all persuaded out of it.

6
  • 6
    Given the sub-pence coins were still around, did that mean that businesses just stopped pricing anything with fractions of pence? Thereby, of course, hastening the end of such coins because they were not used much anymore?
    – Jon Custer
    Commented Oct 5, 2023 at 12:35
  • 1
    This sounds rather like the scam Richard Pryor's character plays in one of the Superman movies. He works in the computer department of a large multinational and writes a program to divert all the fractions of a cent in the payroll run into a private account. He buys a sports car with the first output. Commented Oct 6, 2023 at 8:21
  • 1
    The same scam was reused in Office Space, except that the programmer screwed it up.
    – dan04
    Commented Oct 6, 2023 at 17:00
  • @JonCuster Norway did this with currency units smaller that 1 kr, the prices are still done including fractions, but it is all rounded up/down. First the 1, 2 and 5 øre (1/100th of 1 krone) coins went, then the 50 øre coins. As far as I understand, most totals now round off to nearest .50 (might be nearest whole now), but the decimals are still seen in prices and in bank accounts. I assume one day the decimals will drop entirely so no more sleazy "kr. 19,99" nonsense from merchants... Commented Oct 9, 2023 at 9:41
  • @htmlcoderexe - in the early 1990s the Dutch were similar. Prices were in units smaller than the smallest Guilder coins, and rounded at the register. Perhaps they went through a similar evolution before I got there.
    – Jon Custer
    Commented Oct 9, 2023 at 14:25
5

Decimalisation roughly overlapped with the era of computerisation.

The transition to decimalisation in the UK occurred in February 1971, but it had been on the cards since the early 60s. There was little commercial computerisation in the 50s, so anyone commissioning accounting software in the 60s always had some regard that decimalisation may be impending.

Before computers, banks used mechanical and electromechanical machines for accounting work. Since decimalisation meant these machines had to be physically revamped, many banks targeted some kind of computerisation of their operations by 1971 to avoid the cost and hassle of this overhaul (which would otherwise have had to be executed countrywide over a single long weekend).

The technical term for the LSD system is a "mixed radix" system, and performing arithmetic in such systems is simply about converting all values into multiples of the smallest unit, performing the arithmetic, then converting back into the mixed radix format. Integer division and remainder operators are the workhorses of this arithmetic.

There were 20 shillings to a pound, 12 pennies to a shilling, and therefore 240 pennies to a pound.

Converting say 270 pennies into £1/2s/6d for presentation is done like so:

Amt = 270

Ldiv = Amt / 240 (= 1)
Lrem = Amt % 240 (= 30)
Sdiv = Lrem / 12 (= 2)
Srem = Lrem % 12 (= 6)

The Ldiv, Sdiv, and Srem calculated values are then the amounts in LSD form.

The "LSD" abbreviation derives from Latin, in which Libra, Solidus, and Denarius are the words for Pound, Shilling, and Pence. The £ (pound) sign is a stylised L.

Historically there had also been halfpennies and farthings (fourth-ings, or quarters, of a penny), as well as further subdivisions in certain times and places. The farthing was withdrawn from the UK mainland in 1961, but the halfpenny survived decimalisation in 1971, not being withdrawn until 1984.

By working natively in pennies (or subdivisons thereof), the transition between LSD and decimal was a relatively simple case of changing the presentation of the native amount, as well as a one-time revaluation of all accounts on "decimal day" in 1971. Legislation determined exactly how the revaluation was to occur.

I'm led to believe that there are few if any extant bank computer systems which pre-date decimalisation, with any that did having been completely overhauled in the 70s or 80s at the latest.

But the answer to the question is that any computer system that traversed decimalisation, likely performed arithmetic natively in some fractions of a penny - which is an approach that works for both LSD and decimal, by simply tweaking the presentation of the native amount.

And any computer system dating from before the mid-80s and with software written bespoke in Britain and for Britain (when halfpennies were still in circulation) - and I believe these do still exist - is probably still capable internally of representing fractions of a penny.

Nowadays, new software is still likely to cope internally with decimal currency fractions smaller than a penny, not as a hangover from past British coinage, but simply as a flexible approach (including coping with accounting in foreign currencies).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .