A missing total is not a zero
A formula without a saved calculated answer became zero, and the underwriting model treated it as actual income.
The T-12 column in an underwriting model puts the property’s actual trailing income and expenses next to the broker’s pro forma. In one run, that column shipped as zeros and three readiness checks passed.
The generated T-12 analysis contained formulas, but the saved workbook did not contain their calculated answers. My reader received a missing value and converted it to zero. The model then displayed zero as an actual.
Rejecting every zero was also wrong. A property can genuinely have no pet income. I needed to preserve two separate facts: the amount, and whether the reader successfully obtained it.
This illustrative Python shows the distinction using synthetic input. The dictionary is a simplified example, not the production schema:
raw_value = None # Formula's calculated answer is missing.
# This shortcut loses the distinction:
amount = raw_value or 0
# Preserve whether the value was read:
if raw_value is None:
result = {"state": "unreadable", "value": None}
else:
result = {"state": "read", "value": raw_value}
The full read also needs to distinguish a missing field:
| Synthetic source condition | Meaning |
|---|---|
Saved numeric value is 0 | Successfully read zero |
| Formula exists; calculated answer is missing | Unreadable |
| Expected field is missing | Absent; apply its required or optional rule |
Four sanitized statements with different layouts now pass through the real builder, saved workbook and downstream readers through to the audit verdict. Expected totals come from the statements’ printed totals, never the parser’s output.
Building that test found another problem: rebuilding a model without a T-12 left the previous run’s actuals in place. That column is now cleared. I also ran the new readiness check over about sixty current deal folders before merging; no verdict changed.
I want every actual in that column to be traceable to the statement or visibly missing. The test checks that distinction within the layouts and readers it covers.