Almost every energy reporting problem that makes a facilities team distrust its own dashboard comes from the same place: a cumulative counter behaving in a way the reporting layer did not expect. The symptom is a single implausible interval, a month that shows negative consumption, or an annual total that is wrong by roughly one meter's worth. The cause is rarely the meter. It is nearly always that somebody wrote a subtraction without asking what happens when the counter does not increase.
The message up front: a cumulative meter reading is not a measurement, it is a running total, and consumption is the difference between two of them. That difference is only valid while the counter has been monotonically increasing and nothing about the meter has changed. Four events break that assumption: rollover, reset, replacement and a configuration change such as a multiplier. Detect each one explicitly, handle each one differently, never silently discard the interval, and never raise a consumption alert on an interval you have not validated.
1. Counters, not measurements
A temperature point reports a value that stands on its own. A cumulative meter register reports a total since some arbitrary origin, and on its own it tells you almost nothing: the number is only meaningful relative to another reading of the same register.
That distinction has consequences throughout the data chain. You cannot average a counter. You cannot interpolate one and treat the result as measured. A missing reading does not mean missing consumption, because the next reading still includes it. And every operation on a counter depends on an assumption, that it only goes up, which is true most of the time and spectacularly false the rest.
Some meters make this easier by reporting interval consumption directly as well as the cumulative register. Where both are available, use both: the interval value for reporting and the cumulative register as the check, because the sum of intervals across a period should reconcile to the difference in the register, and where it does not you have found something.
2. The four events, and how each presents
| Event | What happens | What a naive subtraction produces | Distinguishing signature |
|---|---|---|---|
| Rollover | The register reaches the largest value it can hold and wraps to zero | A large negative number | The previous reading sits near the register's maximum. The new reading is small. Predictable, and the maximum is a property of the meter |
| Reset | The register is zeroed deliberately, or by a power cycle on a meter that does not retain its total | A large negative number | The previous reading is nowhere near the maximum. Usually coincides with site work or a power event |
| Replacement | A new physical meter with its own register, usually starting near zero | A large negative number, then normal | Same as a reset in the data. Only distinguishable from maintenance records or a changed serial number |
| Configuration change | A multiplier, current transformer ratio or unit setting is altered | Nothing obviously wrong. Consumption simply steps to a new level and stays there | No negative value, no gap. A persistent step change with no operational explanation. The dangerous one |
The first three announce themselves because the arithmetic goes negative. The fourth does not, and that is why it is the one that quietly corrupts a year of reporting. A current transformer ratio corrected during maintenance will make every subsequent reading internally consistent and incomparable with everything before it, and nothing in the data says so. That failure mode is one of the field device errors catalogued in BMS points lists and field devices.
3. Handling each one
- Rollover. Recoverable, provided you know the register's maximum. Consumption is the distance from the previous reading up to the wrap point, plus the new reading. This requires the maximum to be recorded per meter as configuration, which is the piece almost always missing; without it you cannot distinguish a rollover from a reset and must treat both as unknown.
- Reset. Not recoverable from the data. Consumption between the last reading and the reset is lost, and the new reading is a fresh origin. The honest treatment is to mark the interval as unknown, use the new reading onward, and never substitute an estimate without labelling it as one.
- Replacement. Same arithmetic as a reset, different record-keeping. The old and new meters are distinct physical assets, and if the data model treats a meter point as permanent they get silently merged. Keep the final reading of the old meter and the opening reading of the new one as recorded values, from the commissioning paperwork rather than from the data, because that is the only reliable bridge across the gap.
- Configuration change. The only defence is process: treat any change to a multiplier, ratio or unit as a dated event recorded against the meter, with the before and after values. Then historical analysis can at least know that a discontinuity exists. Without the record there is nothing to detect.
Mark the interval, never delete it
The tempting fix for an absurd interval is to drop the row, and it is the wrong one. A deleted interval becomes an invisible gap: totals are quietly short, nobody knows why, and the same event looks like a data collection failure next time somebody investigates. Keep the interval with its raw readings, a quality flag naming what happened, and a separate corrected value where one can be derived. Reporting then excludes or includes it on an explicit rule, and anyone reading the figures can see that a period contains an estimated or unknown value rather than discovering it later. This is the same principle that governs suppressed alerts in alert deduplication: flag, do not discard.
4. The checks to run on every interval
Cheap, and they belong in the ingestion path rather than in a report, so that bad data is labelled before anything consumes it.
- Negative difference. The primary trigger. Then classify: near-maximum previous reading suggests rollover, otherwise reset or replacement.
- Implausible positive difference. Consumption in one interval exceeding what the connected load could physically draw in that time. Catches a corrupted reading, a misread register and some multiplier errors. The plausibility ceiling has to come from the electrical or mechanical design rather than from the data.
- Zero difference over a period when the plant was running. A frozen register, which is a failed meter or a lost connection rather than genuinely no consumption. Related to the stale value problem in the connectivity loss playbook.
- Interval length not matching the expected period. A missing reading makes the next interval cover twice the time, and a per-interval comparison against the previous day then flags a false doubling. Normalise by elapsed time, not by reading count.
- Step change in baseline. Compare a rolling baseline before and after; a persistent shift with no operational explanation is the signature of a configuration change.
- Sum of intervals against register difference, where both are available. The strongest check there is, and it needs no thresholds at all.
5. Why consumption alerting needs this first
Energy alerting is usually the reason somebody started collecting meter data, and it is the thing most damaged by unhandled counter events.
A rollover produces a wildly negative figure, which most alert rules will not catch because they were written to look for high consumption. A reset produces the same. A configuration change moves the baseline, so every subsequent comparison against history is wrong in the same direction, and a threshold set before the change will either alarm permanently or never again. In each case the alert system is now producing confident output from invalid input, which is worse than producing nothing, because somebody will act on it.
The sequence that works is to validate first, flag the interval, and only then evaluate alert rules against intervals marked good. Intervals marked bad raise a different alert, a data quality one, routed to whoever owns metering rather than to whoever chases consumption. Those two things are genuinely different problems with different owners, and merging them is why energy alerting gets switched off. The wider alerting context is in BMS energy optimisation, FDD and analytics.
6. What the data model needs to hold
| Field | Why |
|---|---|
| Register maximum and digit count | Without it, rollover and reset are indistinguishable and neither can be corrected |
| Multiplier, CT ratio and unit, with effective dates | Makes the silent discontinuity visible. The single most valuable field in this table |
| Meter serial or asset identity, with effective dates | Distinguishes replacement from reset, and keeps the physical asset history correct |
| Expected reading interval | Lets a missed reading be detected rather than silently widening the interval |
| Plausible maximum rate | The ceiling for the implausible-value check, sourced from the design |
| Raw reading as received | Keep it. Every correction should be derivable and reversible |
| Quality flag per interval | Good, rollover corrected, unknown, estimated, suspect. Reporting rules key on this |
| Correction method and who applied it | An unexplained corrected figure is not usable as evidence |
The effective-dated fields are what make historical reporting correct rather than merely current. Applying today's multiplier to last year's readings is a common and invisible error, and it is the same class of mistake as applying today's asset mapping to last year's events, discussed in BMS point-to-asset mapping.
7. Estimating a lost interval, honestly
Where consumption is genuinely lost, some reporting obligations require a figure rather than a gap. That is legitimate, and it has to be done visibly.
- Label every estimate as an estimate, in the data and in any report that uses it. An estimated figure presented identically to a measured one is the problem, not the estimation.
- State the method alongside the value: comparable period, adjacent intervals, or a related meter. Different methods suit different situations and a reader needs to know which was used.
- Never let an estimate become the raw value. Store it in its own field. Overwriting the raw reading destroys the only record of what actually happened.
- Report estimated volume as a quality measure, so the proportion of any total that is estimated is visible to whoever reads it.
- Where the figure matters commercially or for compliance, follow whatever estimation method the relevant scheme or contract specifies rather than inventing one. That is a question for the scheme operator, not a data decision.
8. Reconciling against the bill
The strongest available check on a sub-metering system is the supplier's invoice, and it is routinely not used because the two live in different departments.
- Compare the sum of your sub-meters against the incoming supply for the same period. The difference is unmetered load plus error, and knowing its usual size means an unusual size becomes detectable.
- Expect a gap and quantify it rather than aiming for zero. A stable gap is fine; a changing one is the finding.
- Match the periods properly. Billing periods rarely align with calendar months, and comparing mismatched windows produces a discrepancy that is entirely artificial.
- Reconcile monthly, not annually. A monthly check localises a problem to a month; an annual one tells you something was wrong at some point in a year.
- Treat an unexplained change in the gap as a data quality incident, with a work order, rather than as a curiosity. It is usually a meter that stopped, rolled over, or had its configuration changed.
For thermal metering the same logic applies with more moving parts, since consumption is derived from flow and temperature difference rather than read directly, and each input can fail independently. The specifics are in district cooling and BTU metering.
9. Where this touches maintenance
Two practical connections worth making, because they are usually missed.
First, meter work is maintenance work and should be recorded as such. A reset, a replacement, a recalibration or a ratio change is an event with a date, performed by somebody, and if it only exists in a contractor's report it will not be available to whoever is puzzling over the data in eighteen months. Raising these as work orders against the meter asset puts the record where the analysis will look for it.
Second, where meter readings drive maintenance scheduling, run-hours or usage-based tasks, a counter event corrupts the schedule as well as the reporting. A reset can make a usage-based task appear due immediately or never, and neither failure is obvious. If you use that approach, the validation described here is a prerequisite rather than an improvement, and the scheduling mechanics are covered in meter-based and usage-based PM in a CMMS.
Limits on what is here
No register sizes, rollover points, plausibility thresholds or tolerance figures are given, because they are properties of your specific meters and your connected load, and a borrowed number would produce either constant false flags or silent misses. Take them from the meter documentation and the electrical or mechanical design. Where metering is used for billing, tenant recharge, or a regulated reporting scheme, the handling of estimates and corrections is likely to be prescribed by that scheme or by the relevant metering regulations in your jurisdiction, and those rules govern rather than anything suggested here. My own domain is the data model, the validation workflow and how this lands in maintenance and reporting systems; metering engineering and regulated measurement are not, and the accuracy of a given installation is a question for a metering specialist.
The idea to walk away with
Consumption is a derived figure, and the derivation rests on an assumption that the counter only ever increases. That assumption fails routinely and in four distinct ways, three of which are obvious in the arithmetic and one of which is completely silent.
Handle it by holding the meter's own properties as configuration, validating every interval at ingestion rather than at reporting time, flagging rather than deleting, and recording multiplier and replacement events with effective dates so that history stays interpretable. Then energy alerting becomes possible, because the alerts are evaluated against intervals somebody has already decided are trustworthy.
Final thoughts
A quick way to find out whether this already affects you: plot a year of interval consumption for your largest sub-meters and look for negative values, single implausible spikes, flat runs, and step changes in the baseline. The first three are usually obvious at a glance.
The step changes are the ones worth the most attention, because they are the ones nobody has noticed, and each one marks a date on which your energy data stopped being comparable with what came before it. Finding those dates and matching them against maintenance records is often the single most useful afternoon anyone spends on an energy reporting system, and it usually explains at least one number that has been quietly puzzling people for a year.
Disclosure
Alongside advisory work I also build a CMMS and CAFM platform, so I have a commercial interest in this category. Nothing above is a recommendation for it, and no vendor named here has paid for inclusion or had any editorial input. Weigh the analysis accordingly.
Energy figures nobody trusts?
Independent review of meter data validation, counter event handling, quality flagging and reconciliation against supply, plus getting meter work recorded where the analysis will find it. 22+ years across CMMS, CAFM, EAM and ERP implementations.
Book a conversationRelated reading: BMS data retention policy, District cooling and BTU metering, Meter-based and usage-based PM, Energy management systems for buildings, BMS energy optimisation and FDD, BMS point-to-asset mapping.
Muhammad Abbas
CMMS / CAFM Manager & Independent Advisor · 22+ years across enterprise CMMS, EAM, CAFM and ERP implementations in utilities, oil and gas, manufacturing, government and facility operations.
Work with me