diff --git a/datatypes/epc/domain/epc.py b/datatypes/epc/domain/epc.py index 6c65cf0a9..67b69dbaa 100644 --- a/datatypes/epc/domain/epc.py +++ b/datatypes/epc/domain/epc.py @@ -48,4 +48,13 @@ class Epc(Enum): return bounds[self] def sap_lower_bound_continuous(self) -> float: - raise NotImplementedError + """The band floor on the **continuous** SAP scale — the lowest un-rounded + rating whose *published* rating falls in this band (C → 68.5). + + A dwelling is in a band by its published rating, which is the continuous + score rounded half up, so the published rating enters the band half a + point below the integer floor. Anything judging "has this dwelling + reached band X?" against a continuous score must compare with this, not + with `sap_lower_bound`: a dwelling at a continuous 68.6 publishes as SAP + 69 and *is* band C, but reads as 0.4 short of an integer floor of 69.""" + return self.sap_lower_bound() - 0.5