What software, or an AI, misreads in a construction spreadsheet
Some numbers in an Excel file are not what they seem to the software reading it. These are five I have run into, and what a careful reader should say instead of guessing.
On 7 October I saved an Excel file in which B1 showed 20, although its formula, =A1*2, would have given 30 from the value then in A1.
A reading library opened that file and reported 20, with nothing to suggest it was out of date. Software that reads a saved file, an AI assistant included, sees what Excel stored, and that can be a stale result, a date that never existed, or a blank where a zero should be.
I collected these while building our own checker, mostly by reading them wrong first. Each item below says what happens, how to see it in the file, and what I think a careful reader, person or program, should say about it.
The point isn't to stop using software. It is to know which answers need the words ‘I can't confirm this’.
01Five misreadings
Five places the saved file and the screen disagree
Three come from how Excel stores results and dates, and two from how common reading and import tools handle them. The tools and versions named are the ones we used; others may behave differently.
1A saved result that is out of date
What happensOn 7 October 2026 I set Excel for Mac (16.113.3) to manual calculation, changed A1 to 15 and saved without recalculating. B1 holds =A1*2, but the file saved 20, the result from when A1 was 10. A widely used reading library, ExcelJS 4.4, read 20.How to see it in the fileWhen Excel knows results are stale, it writes calcCompleted="0" in the workbook's calculation settings. The flag only helps when it is there. According to a reply on the r/excel forum, LibreOffice sometimes doesn't write it, Google Sheets exports usually mark it complete, and openpyxl doesn't write it. I haven't reproduced those three myself.What to say insteadWhen a file has formulas and no flag you can rely on, say the value may not be current. Don't recalculate quietly and present the new number as the file's.2A zero that is read as nothing
What happensA count of 0 or an empty difference is a normal formula result. ExcelJS 4.4 returned these formula cells as having no result, so they looked as if they had never been calculated. In one of our own synthetic tests, a tool then left out a line whose amount was 0, as if the data were missing.How to see it in the fileThe saved result is still in the sheet's XML, in the cell's <v> element. Reading that element directly gets the 0 back.What to say insteadKeep a zero as a zero. If a tool says a formula has no result, check the raw value before treating the line as empty.3The 1904 date system
What happensExcel stores dates as numbers, counted from one of two starting points. For any date after February 1900, the same serial number means two dates 1,462 days apart, depending on whether the workbook uses the 1900 or the 1904 date system. Some older Mac files use 1904.How to see it in the fileThe workbook settings carry a date1904 flag. Read it before converting any date, including before deciding what serials 0 and 60 mean.What to say insteadConvert dates with the file's own system. If dates in two files disagree by about four years, check this flag before anything else.4Day 0 and day 60 in the 1900 system
What happensIn the 1900 date system, serial 0 displays as 1900/01/00, and serial 60 displays as 29 February 1900, a day that never existed. Excel keeps it for compatibility with older spreadsheet software. In the 1904 system the same two serials are 1 January and 1 March 1904, both real dates. Reading libraries can turn any of these into ordinary-looking dates.How to see it in the fileCheck the date system first, then read the raw serial number before converting it.What to say insteadUnder the 1900 system, treat serial 60 as no date at all, and say so; don't report 29 February 1900 as a payment date. Our own tools also treat 0 as missing in either system. That is our choice, not an Excel rule, so say which rule you are applying.5A blank that arrives as something else
What happensIn one of our test runs, a cell that was blank in the original file came through a general-purpose import tool as the text ‘12’. Nothing on screen suggested anything was wrong.How to see it in the fileCompare the imported value with the same cell in the original file's XML. We only caught this one because a separate check read the raw file.What to say insteadIf an imported value can't be found in the original file, say its origin is unknown, and don't use it.
02Asking an assistant
A few lines I would give it before the file
If I hand a spreadsheet to an AI assistant, I would give it some rules first. They don't make its answer right. They ask it to say when it doesn't know. I haven't tested how well assistants follow them, so I would still check what comes back.
‘Report every figure with its sheet and cell, and tell me whether the cell holds a formula or a typed number. If the workbook was saved with calculation incomplete, or you can't tell, say the value may not be current. Before reading any date, check whether the file uses the 1904 date system; under the 1900 system, treat serial 60 as missing, and treat serial 0 as missing in either system unless I say otherwise. Don't fill blanks with zero, and don't recalculate without telling me. Where you can't confirm something, write “cannot confirm” and say what would settle it.’
03For people building tools
Read the file, not only the library's answer
Most of these were caught by going one level down, to the XML inside the .xlsx, and comparing it with what a library returned. A reading library is built to be convenient, and it fills gaps in reasonable ways. In a pay app, a reasonable fill can quietly change an amount.
When something can't be checked, list it. A short list of what wasn't checked is more useful to the person signing than a clean report that skipped it.
04In our workbench
What Pactbeam does with these
Pactbeam reads the values saved in the file and doesn't recalculate Excel. What it can't check, it lists instead of skipping. Some of the five above are handled in our tools and some are not yet. We are working through them, and this page will change as we do.
05Limits
What this page cannot establish
Five is not a complete list. These are the ones we have run into and could check. Others are still candidates on our own list.
Only the first item was reproduced by hand, and only in one version of Excel for Mac. What it says about LibreOffice, Google Sheets and openpyxl comes from a forum reply we haven't reproduced. Library behaviour is for the versions named; newer versions may differ.
None of this tells you whether a figure is correct. It tells you when the file alone can't show that a figure is current or complete.
06Sources and construction
Where each item comes from
Our own reproductions and tests, one forum reply, and Excel's date rules. No real project file was read for this page.
- ObservationItem 1: reproduced by the author on 7 October 2026 in Excel for Mac 16.113.3. The saved file recorded calcMode="manual" calcCompleted="0" calcOnSave="0", B1 stored the formula A1*2 with a saved value of 20, and ExcelJS 4.4 read 20.
- SourceItem 1, other programs: a reply on the r/excel forum on 7 October 2026, describing which programs write the calculation flag. Not reproduced by us.
- ObservationItems 2 and 5: our own synthetic tests in October 2026, while building Pactbeam's period check and funding tools.
- InferenceItems 3 and 4 describe Excel's two date systems. Our own tools read date1904 first, treat serial 60 as missing only under the 1900 system, and treat serial 0 as missing in either system as our own policy; our tests cover this. The instructions for an assistant are mine and have not been tested as a prompt.
- Synthetic exampleAll values come from practice files. No real project file was read.
Has a spreadsheet ever given you, or your software, a number that turned out to come from an older calculation?
If you have run into one that isn't here, I would like to add it. Write to me with what happened; please don't send the file.