diff --git a/R/InsuranceTarif.R b/R/InsuranceTarif.R
index a1c02f5b2a32064834e3a2710de7f576bb091d87..0fe132372a6d61907683eeb504a57c03f0e8392e 100644
--- a/R/InsuranceTarif.R
+++ b/R/InsuranceTarif.R
@@ -299,11 +299,13 @@ InsuranceTarif = R6Class(
       }
       age = params$ContractData$technicalAge
       maxAge = MortalityTables::getOmega(params$ActuarialBases$mortalityTable)
-      policyPeriod = params$ContractData$policyPeriod
+      policyTerm = min(maxAge + 1 - age, params$ContractData$policyPeriod)
       list(
-        l = min(maxAge - age, policyPeriod) + 1,
-        policyTerm = min(maxAge - age, policyPeriod),
-        premiumTerm = min(policyPeriod, params$ContractData$premiumPeriod)
+        l = min(maxAge +1 - age, policyTerm),
+        # maxAge is the last age with a given death probability, so it can be included in the policy term!
+        # The policy must end AFTER that final year, not at the beginning!
+        policyTerm = policyTerm,
+        premiumTerm = min(policyTerm, params$ContractData$premiumPeriod)
       )
     },