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

Brian Borchers
  • 556
  • 5
  • 8
  • 13
    I suspect you answered the question yourself. – UncleBod Oct 04 '23 at 05: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 Oct 04 '23 at 06:40
  • "Do everything in pence" is the intuitive way to do it; but is there really anything fundamentally different about base-ten here? – Omar and Lorraine Oct 04 '23 at 09:01
  • 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 Oct 04 '23 at 09: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. – Omar and Lorraine Oct 04 '23 at 09:42
  • @Lorraine Not really, except that carry is to be handled different, according to digit and digit group, which does require additional microcode - if not a whole different way of encoding is used - like on punch cards where some formats encoded shillings (0..19) as well as pence (0..11) as single columns (characters), while pound had regular one column per digit encoding. – Raffzahn Oct 04 '23 at 12:06
  • @Raffzahn All of that is obviated by the base conversion step, which may be decimal or mixed or something else! Am I somehow not getting my point across here! – Omar and Lorraine Oct 04 '23 at 12:14
  • 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 Oct 04 '23 at 13:10
  • @another-dave Maybe not unusual, but I wouldn't know any modern machine with an instruction specifically for that. – Raffzahn Oct 04 '23 at 13:26
  • @Lorraine guess not. My remark was about early computers which in fact handled S/D as single digits thus no base conversion step needing – Raffzahn Oct 04 '23 at 13:27
  • 1
    I asked this question on Stack Overflow a long time ago: https://stackoverflow.com/questions/3031260/how-was-non-decimal-money-represented-in-software – dan04 Oct 04 '23 at 16:31
  • @ssokolow: Historically, the farthing (1/4 penny or 1/960 pound) was the lowest unit, but by the time computers became popular, it had been discontinued due to inflation. – dan04 Oct 04 '23 at 16:35
  • Similarly with feet and inches. We would mentally convert the inches to decimal feet before multiplying, for example 5'2" is 5.16667 feet. – Weather Vane Oct 04 '23 at 16:44
  • 3
    PICTURE (or PIC) clauses are not special. They are ubiquitous in COBOL. They are simply how you declare data formats: "The PICTURE clause must be specified for every elementary item except the ..." – JimmyJames Oct 04 '23 at 17:51
  • @dan04 historically the half farthing would have been the smallest, wouldn't it? Also the Farthing was legal tender until 1961, so way into the age of computers. – Raffzahn Oct 04 '23 at 22:06
  • @Raffzahn: The half farthing and quarter farthing were used in British Ceylon (now Sri Lanka), not in Britain itself. And they were demonetized in 1869, so long irrelevant by the time banks started using computers. – dan04 Oct 04 '23 at 22:16
  • 1
    @dan04 Yes, they were. I only tried to be helpful to you rescue your argument about the Farthing having been ousted before computers were a thing. Thought you'd appreciate it a bit more:)) – Raffzahn Oct 04 '23 at 22:47
  • 1
    *£sd* (occasionally written Lsd, spoken as "pounds, shillings and pence" https://en.wikipedia.org/wiki/%C2%A3sd - no, that's pronounced Lysergic acid diethylamide. – Mazura Oct 05 '23 at 01:19
  • Worth stating that, in any currency, the best way to do calculations is to use the smallest unit eg. pence or cent and do integer calculations and only convert to the normal unit for display. Never use floating point for currency. – JeremyP Oct 05 '23 at 08:09
  • @dan04 Yes but, as I understand it, the penny was still the base unit. (Which makes sense. Prior to computers, the indivisibility of base units wasn't baked into an integer variable's binary representation.) I should, however, have said "multiples or fractions of" rather than just "multiples of". – ssokolow Oct 05 '23 at 08:23
  • 1
    Of course (@dan04) there was still ½d, and indeed post decimal, ½p. At least those can be exactly represented in binary – Chris H Oct 05 '23 at 13:30

5 Answers5

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 :))

Raffzahn
  • 222,541
  • 22
  • 631
  • 918
  • 5
    I actually have a 1956 Brunsviga 94T, which is an insanely complex piece of mechanical engineering. – Eight-Bit Guru Oct 04 '23 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 Oct 04 '23 at 13:07
  • 1
    @another-dave Interesting, I would have rather expected that from the KDF8. But yes, another example of very English (Electric) computers :)) Wouldn't wonder if that's basically the same instruction as with the DEUCE. (also, lovely link, thanks) – Raffzahn Oct 04 '23 at 13:22
  • 1
    re “No, no Farthings” why not? A farthing has to be accounted for and every banking system I’ve been involved with programming in the last 30 years has used minor currency units (cents, millimes whatever is the smallest). Farthings were legal tender until 1961. – lx07 Oct 04 '23 at 18:00
  • @lx07 Because accounting didn't do Farthings. They were either not used - like the above adding machine shows - or recorded as fractional pence. 11 Pence 3 Farthings (one Farthing short of a Shilling - a number similar to today's 9.99 price style) was recorded as 11¾p (the very reason why the cited COBOL compiler supports fractional pence). Same way as a Guinea was not recorded as such, but as one pound and one shilling or 21 shillings ( Equivalent to £1.05 in decimal notation). Also, cents and so on are not currency units of their own, but decimal fractions of their currency. – Raffzahn Oct 04 '23 at 21:38
  • @Raffzahn - "KDF8" ? Are you using floating point? (Actually, there was such a thing, but it's an RCA clone, fairly unremarkable). – dave Oct 04 '23 at 21:49
  • @another-dave I was always under the impression the KDF9 was meant as supercomputer (of its time), whie the KDF8 was supposed to sell for commercial applications - and LSD conversion is for sure more of an accounting speciality. Then again, my knowledge about tose is quite limited. – Raffzahn Oct 04 '23 at 22:03
  • 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 Oct 04 '23 at 22:13
  • 3
    "LSD"!? I always thought they must have been high on something! – Peter - Reinstate Monica Oct 06 '23 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 Oct 06 '23 at 16:58
  • ... and since you have to enter the numbers in the first place, numeric kepads went up to 11.... There used to be one on display at the UK National Museum of Computing but I can't find a better photo ATM. – Lou Knee Oct 07 '23 at 12:41
  • @LouKnee Nice try, I like it :)) This isn't a numeric keyboard but a keypunch allowing to punch all 12 rows. Having 10/11 on a card punch is unrelated to LSD currency. They simply relate to row 10/11 (note, 10 being above 11 and both above 0) which are used to extend the numeric 0..9 code of early punch cards to hold non numeric characters as well - like 10+1 means A, 11+2 -> K and so on. Used on their own they don't mean the numbers 10/11 but the symbols & ad -. – Raffzahn Oct 07 '23 at 13:04
  • 1
    @Raffzahn :( The artefact at the NMOC is, IIRC, an electromechanical card punch with a separate keypad, but I'm having trouble finding it on line... searches either try to sell me a USB keypad, babble on about Windows 11, or both ... weird how hard it is to find a photo given the obvious joke! – Lou Knee Oct 14 '23 at 12:33
  • @LouKnee Now that would be quite revealing to see. I do value card equipment over all other computing machinery but do not remember any such unusual artefact at the NMOC. – Raffzahn Oct 14 '23 at 12:54
  • 1
    @Raffzahn Not been to NMOC for too long now... and I always get distracted by the Dekatron anyway! Closest I've found on-line so far is Spinal Tap Cardpunch... I dimly have in mind that the purpose of the device was to validate input data by comparing a re-typed version, and that sounds like a really painful exercise to do bulk text input as you describe above (hence why I think the item I saw had a text keyboard too). All before my time though. – Lou Knee Dec 23 '23 at 16:18
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

Keith Miller
  • 251
  • 2
  • 4
  • 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 Oct 04 '23 at 08: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 Oct 04 '23 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.) – Chris Bouchard Oct 04 '23 at 16:54
  • 3
    @dan04 That sounds doubtful banks especially would have gone through a LOT of testing pre Y2K and printing a statement seems too basic to have been missed. Found during testing quite probably – mmmmmm Oct 04 '23 at 18:10
  • 1
    @mmmmmm, even in the past 10 years, many banks still had statements designed around storage on microfiche or other anachronisms. It wouldn't surprise me if something somewhere was missed on Y2K. – Steve Oct 04 '23 at 19:08
  • 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 Oct 04 '23 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 Oct 05 '23 at 07:57
  • 3
    @pipe, trouble exists there as well. The day is the original unit, and seconds are fractional parts. However modern physics has disconnected the definition of the second from the day, and as a result, there is the problem of leap seconds (which are irregular and unpredictable for UTC). Then you have clocks which drift and have to be corrected, so you can potentially get jumps or repeats in the assumed progression. Certainly, the handling of time is often not nearly as simple as just storing seconds! – Steve Oct 05 '23 at 11:39
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.

dan04
  • 964
  • 7
  • 9
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.

user761165
  • 91
  • 1
  • 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 Oct 05 '23 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. – Oscar Bravo Oct 06 '23 at 08:21
  • 1
    The same scam was reused in Office Space, except that the programmer screwed it up. – dan04 Oct 06 '23 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... – htmlcoderexe Oct 09 '23 at 09: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 Oct 09 '23 at 14:25
  • @JonCuster: According to Wikipedia, the Dutch had a half-cent coin until 1948, and a 1-cent coin until 1983. – dan04 Oct 09 '23 at 18:12
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).

Steve
  • 787
  • 4
  • 6