Skip to contents

The use of non-decimal currencies in the form of pounds, shillings, and pence in medieval and early modern Europe complicates the calculation and analysis of monetary transactions in the past. There might be some benefit to experiencing the pain of the early modern bookkeeper who had to make complex bookkeeping calculations by hand, but the suffering, time, and worry about mistakes quickly outweighs the benefits. This vignette goes through examples of financial calculations from the practice journal in the third edition of Richard Dafforne’s The Merchant’s Mirrour, Or Directions for the Perfect Ordering and Keeping of His Accounts (London, 1660). After a short discussion of Dafforne’s Merchant’s Mirrour and the data from Dafforne’s practice journal, examples of a variety of arithmetic calculations and exchanges between various currencies are discussed to highlight use cases for debbeepr and the deb_lsd and deb_decimal classes of vectors. A PDF copy of the journal is available for download. For further analysis of the accounts and course of the trade in the practice journal, see the Analysis of Richard Dafforne’s Journal and Ledger vignette.

Richard Dafforne’s Merchant’s Mirrour

Richard Dafforne’s Merchant’s Mirrour built upon a tradition that began with Luca Pacioli’s Summa de arithmetica, geometria: Proportioni et proportionalita (Venice, 1494), which was the first printed text to describe the practices of double-entry bookkeeping. Throughout the sixteenth century, manuals on double-entry bookkeeping were published in a variety of languages, though the use of double-entry bookkeeping by merchants varied greatly by region. Dafforne gained his understanding of double-entry bookkeeping while residing in Amsterdam, where he became acquainted with the mathematician Simon Stevin. Many of the practices Dafforne detailed in his manual follow those discussed in Stevin’s essay on Princely Bookkeeping (1608). Dafforne returned to London in 1630 and earned his living teaching bookkeeping and Dutch. Upon his return to England, he lamented that knowledge of the art of bookkeeping in his native land lagged behind that he experienced in Holland. Dafforne’s manual acted as both a guide to spread knowledge of bookkeeping and as an advertisement for his own bookkeeping school. The popularity of Merchant’s Mirrour is clear from its multiple editions, which appeared in 1636, 1651, 1660, and 1684. The text was also included in the popular Consuetudo Vel Lex Mercatoria of Gerard Malynes from its 1636 edition.1

The third edition of Dafforne’s manual, which is the edition used here, consists of an introductory dialogue between two students of bookkeeping that presents an overview of the practices of double-entry bookkeeping. It is followed by three practice sets of account books and a short treatise on arithmetic necessary for bookkeeping. Though it contains a short section on calculating interest, Dafforne’s manual concentrates on bookkeeping practices rather than on the arithmetic skills used to calculate the values of the transactions. Dafforne followed those such as Pacioli in proclaiming that the minimal set of account books to practice proper bookkeeping consisted in a wastebook, journal, and ledger. The wastebook acted as the first record of transactions. The journal introduced the language of creditor and debtor, ensuring that each transaction was creditor to one account and debtor to another. The ledger provided the final presentation of the accounts. Each transaction was placed in the ledger twice, once under the credit account and once under the debit account. At the conclusion of the ledger, the total debits should equal the total credits, ensuring that no arithmetic mistakes had been made.

Overview of the practice journal

The data in the debkeepr package comes from the first set of practice account books that presents an example of a merchant’s accounts from 1 January 1633 to 20 July 1634 English style.2 The journal and ledger record 191 transactions dealing with 47 accounts.3 The practice books show the complete lifespan of a set of account books, from the creation of an initial inventory to the balancing of the books to close all of the accounts. The books provide the accounts of a merchant involved in a variety of types of trade spread throughout various regions of Europe. They contain accounts for people and goods in England, Amsterdam, Antwerp, Rouen, Lisbon, and Danzig. Acting on his own, within a company, and as a factor for other merchants, the merchant is involved in trade in textiles, sugar, wheat, pepper, figs, and a handful of other goods. With trade spread over such a wide area, the books deal with six different currencies or monies of account. The account book itself was kept in pounds sterling of 20 shillings and shilling of 12 pence, but most of the other monies of account did not use these standard bases for the shillings and pence units.

  • Pound sterling: 1 pound = 20 shillings; 1 shilling = 12 pence
  • Pound Flemish: 1 pound = 20 schellingen; 1 schelling = 12 groten
  • Holland guilders: 1 guilder = 20 stuivers; 1 stuiver = 16 penningen
  • French crowns: 1 crown = 60 sous; 1 sous = 12 deniers
  • Polish florins: 1 florin = 30 gros; 1 gros = 18 denar
  • Portuguese real: 1 milréis = 1,000 réis

Arithmetic calculations

This section contains examples of various arithmetic calculations to recreate the values recorded in Dafforne’s practice journal. This both shows off the capabilities of debkeepr and helps to explicate the calculations that went into bookkeeping in the early modern period.4 The transaction numbers recorded in the journal correspond to the “id” variable in the dafforne_transactions data. The accounts and the names attached to them can be seen in dafforne_accounts.5

# load debkeepr

Division and multiplication

One of the more straightforward calculations in bookkeeping is division or multiplication of a value to split it among multiple partners or to calculate costs that are charged at a certain percentage of the value of the goods. For instance, in transaction 18 in the journal the merchant Randoll Rice purchased 100 pieces of says or woolen serges for £566 13s. 4d. sterling that were sent to Lisbon for a company in which Rice had a three-fifths part. Transaction 19 calculates the value of Rice’s part in the says.

# 19. For Rice's 3/5 part of the 100 says valued at £566.13.4 nr 18
tr18 <- deb_lsd(566, 13, 4)
tr18 * 3 / 5
#> <deb_lsd[1]>
#> [1] 340:0s:0d
#> # Bases: 20s 12d

In transaction 21 expenses for the says are dealt with, including a brokerage charge of 1/8% and a provision charge of 1/3%.

# 21. For brokerage costs in nr 18 and 20 at 1/8% and provision at 1/3%
sum(tr18 * 1 / 800, tr18 * 1 / 300)
#> <deb_lsd[1]>
#> [1] 2:11s:11.333d
#> # Bases: 20s 12d


Another straightforward calculation is that of interest. Dafforne dedicated an entire section of his bookkeeping manual to the calculation of interest, providing his readers with a table to calculate interest at different rates for different periods of time. An example in the journal is transaction 87 that assesses interest of 8% on £96 14s. 9d. sterling over a period of four months. Though the result here would round down to £2 11s. 7d., the journal lists the interest as £2 11s. 8d.

# 87. For £96.14.9 detained upon interest at 8% for 4 months
deb_lsd(96, 14, 9) * 0.08 * 4 / 12
#> <deb_lsd[1]>
#> [1] 2:11s:7.12d
#> # Bases: 20s 12d

Weights and value of sales/purchases

debkeepr is meant to work with non-decimal currencies, but the ability to change the bases for the solidus and denarius units makes debkeepr types quite flexible. deb_lsd vectors need not represent pounds, shillings, and pence. They can also be measurements of various sorts that also adopted a tripartite unit system. An example of this is presented in the third transaction in the journal that records the weight and value of five barrels of kettles. The weights are given in terms of hundredweight, quarters, and pounds. A hundredweight was equivalent to four quarters, and one quarter equaled 28 pounds. The measurements also provided a tare value for the weight of the barrels, which was shown in pounds.

id hundredweight quarters pounds tare
320 2 3 26 23
319 2 2 18 21
318 2 1 21 22
317 2 0 17 19
316 1 3 5 17

To find the total net weight of the kettles, the gross and tare weights can be found and then subtracted to find the net weight. This can be done by transforming the gross and tare values to deb_lsd vectors with bases of 4 and 28.

# 3. Gross weight
(kettles_gross <- deb_lsd(l = c(2, 2, 2, 2, 1),
                          s = c(3, 2, 1, 0, 3),
                          d = c(26, 18, 21, 17, 5),
                          bases = c(4, 28)))
#> <deb_lsd[5]>
#> [1] 2:3s:26d 2:2s:18d 2:1s:21d 2:0s:17d 1:3s:5d 
#> # Bases: 4s 28d

# Tare
(kettles_tare <- deb_lsd(l = 0,
                         s = 0,
                         d = c(23, 21, 22, 19, 17),
                         bases = c(4, 28)))
#> <deb_lsd[5]>
#> [1] 0:0s:23d 0:0s:21d 0:0s:22d 0:0s:19d 0:0s:17d
#> # Bases: 4s 28d

# Net weight
(kettles_net <- sum(kettles_gross) - sum(kettles_tare))
#> <deb_lsd[1]>
#> [1] 11:0s:13d
#> # Bases: 4s 28d

Transaction 3 notes that the kettles were valued at £4 19s. per hundredweight. The two values cannot be multiplied, as multiplication between two deb_lsd vectors is not implemented, nor would it be possible to do so since the two vectors have different bases. Instead, the price can be multiplied by the decimalized weight created by casting kettles_net to a numeric vector of the correct unit — here, the libra unit.

# 3. Decimalize hundredweight
(kettles_num <- as.numeric(kettles_net))
#> [1] 11.11607

# Value of the kettles
(deb_lsd(4, 19, 0) * kettles_num)
#> <deb_lsd[1]>
#> [1] 55:0s:5.893d
#> # Bases: 20s 12d

This method of multiplying the price by the decimalized weight of a set of goods can be used in a variety of circumstances. For instance, it is possible to follow the purchase and sale of sugar from Lisbon in the journal through this method. In transaction 54 from 21 March 1633 the bookkeeper recorded an agreement to purchase ten chests of sugar from Lisbon weighing 51 hundredweight 3 quarters 4 pounds at the price of 13d. per pound from James Wilkinson. Because the price is given in terms of the pound unit, the deb_lsd vector is cast to a deb_decimal vector in terms of the pence or denarius unit before being cast to numeric.

# 54. 51 hundredweight 3 quarters 4 pounds of sugar at 13d. per pound
# Weight in decimalized pounds
sugar_lbs <- deb_lsd(51, 3, 4, bases = c(4, 28)) %>% 
  deb_as_decimal(unit = "d") %>% 

# Price
deb_lsd(0, 0, 13) * sugar_lbs
#> <deb_lsd[1]>
#> [1] 314:3s:4d
#> # Bases: 20s 12d

As an aside, it would also be possible to represent the weight of the sugar, as well as other weights in Dafforne’s journal, as tetrapartite values by including the unit of the ton of twenty hundredweight through the deb_tetra type. We could manually normalize the value, or use deb_normalize() with the new set of bases of length three. In this case, their is little gained by moving to the use of the deb_tetra type, but it might be useful if weights were listed in this tetrapartite form in other places of the account book or by other factors.

# Normalize 51 hundredweight 3 quarters 4 pounds of sugar as tetrapartite value
deb_tetra(0, 51, 3, 4, bases = c(20, 4, 28)) %>% 
#> <deb_tetra[1]>
#> [1] 2:11s:3d:4f
#> # Bases: 20s 4d 28f

By May, the merchant had found a willing buyer for the sugar at the price of 14d. per pound in the person of George Pinchback. However, when the sugar arrived from Lisbon, there was actually 15 chests weighing 77 hundredweight 2 quarters 20 pounds. All of the merchants involved agreed to the same prices. Transactions 102 and 103 record the purchase price of the sugar and the profits resulting from the 1d. price difference.

# 102. 77 hundredweight 2 quarters 20 pounds of sugar
sugar_lbs2 <- deb_lsd(77, 2, 20, bases = c(4, 28)) %>% 
  deb_as_decimal(unit = "d") %>% 

# purchase price of the sugar
(sugar_purchase <- deb_lsd(0, 0, 13) * sugar_lbs2)
#> <deb_lsd[1]>
#> [1] 471:5s:0d
#> # Bases: 20s 12d

# 103. profits from the sugar
deb_lsd(0, 0, 1) * sugar_lbs2
#> <deb_lsd[1]>
#> [1] 36:5s:0d
#> # Bases: 20s 12d

To complete the deal, Wilkinson needed to be paid for the sugar. Transaction 105 shows that he was paid in the form of 8 silver bars weighing 1733 ounces that were values at 6s. 7.5d. per ounce. However, the bars had a higher value than the sugar, and so transaction 106 shows Wilkinson making a payment to the cash register to even out the payments for the £471 5s. purchase price of the sugar. There is a discrepancy of one-half of a penny, but Dafforne ignored this.

# 105. Payment for sugar
# Value of the 8 silver bars
deb_lsd(0, 6, 7.5) * 1733
#> <deb_lsd[1]>
#> [1] 574:1s:1.5d
#> # Bases: 20s 12d

# 106. Value of sugar at 13d. plus payment of cash
sum(sugar_purchase, deb_lsd(102, 16, 1))
#> <deb_lsd[1]>
#> [1] 574:1s:1d
#> # Bases: 20s 12d

Going through the calculations for this purchase and sale of sugar helps to better understand how Dafforne wanted a merchant to keep his accounts. Though no goods or money had changed hands at the time of transaction 54, Dafforne advised merchants to record any promise of payments in an account that he labeled promise reckoning (account 31 in dafforne_accounts). Dafforne shows the same being done for the agreement to sell the sugar. When the goods arrived, the weight of the sugar had increased. Therefore, the merchant had to even out the the promised amounts for the purchase and sale of the sugar at the previous weight, which is done in transactions 107 and 104 respectively, and calculate the new values as shown above.

Currency exchanges

The examples shown thus far all deal with monetary values in terms of pounds sterling, but many of the transactions in Dafforne’s practice journal involve other currencies. Arithmetic operations can be used for exchanges between currencies that possess the same bases for the solidus and denarius units. However, Flemish pounds was the only money of account used in the journal that possessed the same bases as the pound sterling. In order to find the exchange between other monies of account it is necessary to convert between different bases for the solidus and denarius units with deb_convert_bases(). The following examples show a variety of different conversions between monies of account that do not share the same bases.

Holland guilders and Flemish pounds

Unsurprisingly much of the trade activity that Dafforne placed in his practice journal occurred in or funneled through Amsterdam and thus involved values recorded in guilders, stuivers, and penningen. Guilders possessed a different base from pounds sterling, and to complicate matters further, the exchange rate between guilders and pounds sterling often went through pounds Flemish. Pounds Flemish was tied to guilders at a rate of 6 guilders to £1 Flemish, and Dafforne listed the established exchange rate between pounds sterling and pounds Flemish as £1 sterling to 33s. 4d. Flemish. Though Dafforne provides the exchange rate to pounds Flemish, the transactions in the journal proceed from pounds Flemish to pounds sterling, so the inverse rate has to be calculated. Dividing £1 by the rate inverts the rate and has the added benefit of coercing the value to numeric, which can be used as the multiplier for the exchange. It may also be useful to know the inverse rate expressed as a deb_lsd value, which could be done by casting the inverse rate from numeric to deb_lsd or taking 1 over the original deb_lsd rate.

# Rate for sterling to Flemish
sterling_to_flemish <- deb_lsd(0, 33, 4)

# Decimalized Flemish to sterling rate

# Divide deb_lsd vectors
(flemish_to_sterling <- deb_lsd(1, 0, 0) / sterling_to_flemish)
#> [1] 0.6

# Numeric method
as.numeric(sterling_to_flemish) ^ -1
#> [1] 0.6

# See the rate as a deb_lsd vector
1 / sterling_to_flemish
#> <deb_lsd[1]>
#> [1] 0:12s:0d
#> # Bases: 20s 12d

Transaction 5 provides a good example of the workflow to transform guilders to pounds sterling. The transaction tells that Jacob Symonson possessed 2,290 guilders of the bookkeeper’s capital deriving from a company that they had together. The transaction specifies that this capital was calculated at the general course of 33s. 4d. Flemish. The exchange involves two steps: from guilders to pounds Flemish at the rate of 6 to 1 and then from pounds Flemish to pounds sterling at the listed exchange rate.

# 5. Guilders to Flemish
tr5_guilders <- deb_lsd(2290, 0, 0, bases = c(20, 16))
tr5_flemish <- deb_convert_bases(tr5_guilders, to = c(20, 12)) / 6

# Flemish to sterling
tr5_flemish * flemish_to_sterling
#> <deb_lsd[1]>
#> [1] 229:0s:0d
#> # Bases: 20s 12d

Transaction 33 presents a slightly more complex example. It involves 1,224 guilders 19s. 8d. that Jacob Symonson received through a bill of exchange at an exchange rate different from the general course. Unlike the inverted rate for 33s. 4d. Flemish, the given rate of 36s. 10d. does not easily reduce itself. It is noteworthy that despite this complexity, Dafforne’s calculation is the same as done here if the pence were rounded at the end of the calculations.

# 33. 1224 guilders 19s. 8d. through bills of exchange
# Inverse rate
tr33_rate <- deb_lsd(1, 0, 0) / deb_lsd(0, 36, 10)

# Convert bases and do exchange
tr33_guilders <- deb_lsd(1224, 19, 8, bases = c(20, 16))
tr33_flemish <- deb_convert_bases(tr33_guilders, to = c(20, 12)) / 6
tr33_flemish * tr33_rate
#> <deb_lsd[1]>
#> [1] 110:17s:1.792d
#> # Bases: 20s 12d

A final example for the conversion between guilders and pounds sterling is provided by transaction 40, which records the sale of 60 Leeds dozens or broadcloths in Amsterdam by Jacob Symonson. Thirty pieces of cloth were sold at 45 guilders 7s. 8d. per piece, and the remaining thirty were sold at 50 guilders per piece. The total proceeds from the sales had to be calculated and then converted to pounds sterling at the normal rate of 33s. 4d. Flemish.

# 40. Proceeds from the two sales
(tr40_sale <- sum(deb_lsd(45, 7, 8, bases = c(20, 16)) * 30, 
                  deb_lsd(50, 0, 0, bases = c(20, 16)) * 30))
#> <deb_lsd[1]>
#> [1] 2861:5s:0d
#> # Bases: 20s 16d

# Sum of proceeds and conversion from guilders to Flemish
tr40_flemish <- deb_convert_bases(tr40_sale, to = c(20, 12)) / 6

# To sterling
tr40_flemish * flemish_to_sterling
#> <deb_lsd[1]>
#> [1] 286:2s:6d
#> # Bases: 20s 12d

French crowns

Dafforne’s journal contains many transactions with a factor in Rouen named Jean du Boys who used the French crown of 60 sous as his money of account. The exchange rate between French crowns and pounds sterling differed by transaction, but all were listed in terms of deniers per pound sterling. This rate can be decimalized by casting to numeric or through a longer process using a deb_decimal vector. Thus, in transaction 20 Jean du Boys was remitted £2,148 50s. 6d. French crowns at the rate of £1 French crown to 63d. sterling.

# 20. For £2148 50s. 6d. French crowns at 63d. sterling
# Rate
as.numeric(deb_lsd(0, 0, 63))
#> [1] 0.2625

# or with deb_decimal
deb_decimal(63, unit = "d") %>% 
  deb_convert_unit(to = "l") %>% 
#> [1] 0.2625

tr20_crowns <- deb_lsd(2148, 50, 6, bases = c(60, 12))

deb_convert_bases(tr20_crowns, to = c(20, 12)) * 0.2625
#> <deb_lsd[1]>
#> [1] 564:1s:5.025d
#> # Bases: 20s 12d

A merchant involved in long-distance trade often had to record the value of transactions that occurred in currencies that differed from the money of account used in the account book. Such a situation appeared in transaction 58 in which Jacob Symonson in Amsterdam received a bill of exchange from Jean du Boys in Rouen that consisted of capital for a company involving the bookkeeper and Randoll Rice. Jean du Boys sent Symonson £1,140 17s. 8d. French crowns at the rate of 123d. Flemish, and this transaction was calculated at the rate of 72d. sterling for the purposes of accounting in terms of pounds sterling. In this case, a bookkeeper needed to know the amount of guilders received by Symonson, which was calculated through pounds Flemish, as well as the value in pounds sterling.

# 58. Crowns to Flemish to guilders
crowns_to_flemish <- as.numeric(deb_lsd(0, 0, 123))
tr58_crowns <- deb_lsd(1140, 17, 8, bases = c(60, 12))
tr58_flemish <- deb_convert_bases(tr58_crowns,
                                  to = c(20, 12)) * crowns_to_flemish
deb_convert_bases(tr58_flemish, to = c(20, 16)) * 6
#> <deb_lsd[1]>
#> [1] 3506:8s:1.733d
#> # Bases: 20s 16d

# Crowns to sterling
crowns_to_sterling <- as.numeric(deb_lsd(0, 0, 72))
deb_convert_bases(tr58_crowns, to = c(20, 12)) * crowns_to_sterling
#> <deb_lsd[1]>
#> [1] 342:1s:9.2d
#> # Bases: 20s 12d

Polish florins

The above examples all involved single pounds, shillings, and pence values even if multiple values went into the calculation. This is hardly accidental. Dafforne advised that every transfer of value between accounts should be listed separately.6 However, transactions 64 and 65 present an opportunity to show calculations made on multiple values at the same time. On 7 April 1634, the bookkeeper sent two bills of exchange to Arthur Mumperson in Danzig on behalf of Jacob Symonson. The money of account used by Mumperson in Danzig was the Polish florin of 30 gros and gros of 18 denar, and the exchange rate was again calculated in terms of pounds Flemish. In this case, both bills of exchange were sent at the rate of 232 gros per £1 Flemish, though the calculation requires the inverse rate. There are again a couple of ways to calculate the rate for the exchange, but here a deb_lsd vector is created with the value, the inverse is found, and then this is cast to numeric. In this example, the Exchange between florins to Flemish to sterling is done using the magrittr pipe (%>%) and the prefix form of the multiplication operation.

# 64 and 65. Bills of exchange to Danzig
# Rate of 232 gros per £1 Flemish
tr64_rate <- as.numeric(1 / deb_lsd(0, 232, 0, bases = c(30, 18)))

# Convert florins to sterling through pounds Flemish using the pipe
deb_lsd(l = c(3987, 1907),
        s = c(16, 26),
        d = 0,
        bases = c(30, 18)) %>% 
  deb_convert_bases(to = c(20, 12)) %>% 
  `*`(tr64_rate) %>% 
#> <deb_lsd[2]>
#> [1] 309:7s:6.621d 148:0s:5.793d
#> # Bases: 20s 12d

Portuguese real

The final currency dealt with in Dafforne’s practice journal is the Portuguese real, which came about from trade conducted by Diego del Varino in Lisbon. The Portuguese real as used in the Dafforne journal presents a money of account quite different from all others in the journal. Not only is the base of 1,000 réis to the milréis of a very different magnitude from the pound sterling of 20 shillings, but the real only has two units instead of the three units of the pounds, shillings, and pence monies of account. debkeepr can accommodate this type of money of account, but a placeholder value must be provided for the denarius unit, because neither of the two values passed to bases can be zero or missing.

The other issue with the real is that the exchange rate is given as 400 réis for 5s. sterling, complicating the calculation of the exchange rate. One way to find the ratio is to multiply the réis value by four to get réis equivalent to £1 sterling and then finding the inverse. Another way is to multiply the shillings by 2.5 to find shillings per 1 milréis, converting the unit to libra, and then casting to numeric.

Transaction 51 shows the purchase of 1,576 pieces of figs by Diego del Varino for a company with the bookkeeper and Randoll Rice. The figs were purchased for the price of 681 milréis 960 réis with the exchange rate, as noted above, of 400 réis for 5s. sterling.

# 51. purchase of 1576 pieces of figs for 681 milréis 960 réis
tr51_reis <- deb_lsd(681, 960, 0, bases = c(1000, 12))
tr51_converted <- deb_convert_bases(tr51_reis, to = c(20, 12))

# Method 1: multiply rate of réis by 4 and invert rate
tr51_converted / as.numeric(deb_lsd(0, 400, 0, bases = c(1000, 10)) * 4)
#> <deb_lsd[1]>
#> [1] 426:4s:6d
#> # Bases: 20s 12d

# Method 2: multiply rate of shillings by 2.5 and convert to decimalized pounds
tr51_rate <- deb_decimal(5 * 2.5, "s") %>% 
  deb_convert_unit(to = "l")
tr51_converted * as.numeric(tr51_rate)
#> <deb_lsd[1]>
#> [1] 426:4s:6d
#> # Bases: 20s 12d


Breaking down and recreating the individual transactions within a journal such as has been done here helps to illuminate the actual process of accounting. The arithmetic calculations are often not particularly complicated, but they are certainly tedious to do by hand as was necessary in the seventeenth century. Part of the inspiration for the development of debkeepr was the desire to simplify the process of doing arithmetic with pounds, shillings, and pence values as they are encountered in the course of historical research. The use of mathematical functions and arithmetic operations on deb_lsd or deb_decimal values will likely be most useful in dealing with accounts that are more piecemeal where there is clear value to determining sums or finding equivalent values in different sources. Recreating the calculations made by past bookkeepers as is done here will only get the historian so far. Nevertheless, the transactions in the practice journal of Dafforne’s Merchant’s Mirrour provide a good platform to demonstrate the capabilities of debkeepr and to explicate the inner workings of the Dafforne’s account books, which are analyzed at a higher level in the Analysis of Richard Dafforne’s Journal and Ledger vignette.