diff --git a/R/InsuranceTarif.R b/R/InsuranceTarif.R
index d8171ad6f39a103f089955f8f62c34ab57db4a4a..b2cfb296c6435820730a5ed605823ca469c587e2 100644
--- a/R/InsuranceTarif.R
+++ b/R/InsuranceTarif.R
@@ -321,7 +321,9 @@ InsuranceTarif = R6Class(
       if (getOption('LIC.debug.getAges', FALSE)) {
         browser();
       }
-            ages = ages(params$ActuarialBases$mortalityTable, YOB = year(params$ContractData$birthDate));
+      ages = ages(params$ActuarialBases$mortalityTable, YOB = year(params$ContractData$birthDate));
+      # Append one last age, just in case we need to pad the qx with one more entry:
+      ages = c(ages, tail(ages, 1) + 1)
       age = params$ContractData$technicalAge;
       if (age > 0) {
         ages = ages[-age:-1];
@@ -346,15 +348,16 @@ InsuranceTarif = R6Class(
         if (age > 0) {
           qx    = qx[-age:-1];
         }
+        qx = pad0(qx, length(ages), value = 1)
         if (!is.null(params$ActuarialBases$invalidityTable)) {
           ix = MortalityTables::deathProbabilities(params$ActuarialBases$invalidityTable, YOB = year(params$ContractData$birthDate), ageDifferences = params$ContractData$ageDifferences);
           if (age > 0) {
             ix    = ix[-age:-1];
           }
         } else {
-          ix = rep(0, length(q));
+          ix = rep(0, length(qx));
         }
-        ix = pad0(ix, length(q));
+        ix = pad0(ix, length(qx));
         # invalidity/disease does NOT end the contract if flag is set!
         if (params$ActuarialBases$invalidityEndsContract) {
           px = 1 - qx - ix
@@ -697,7 +700,7 @@ InsuranceTarif = R6Class(
       }
 
       qq = self$getTransitionProbabilities(params, values);
-      qx = pad0(qq$qx, values$int$l);
+      qx = pad0(qq$qx, values$int$l, value = 1); # After maxAge of the table, use qx=1, also after contract period, just in case
       ix = pad0(qq$ix, values$int$l);
       px = pad0(qq$px, values$int$l);