diff --git a/R/InsuranceParameters.R b/R/InsuranceParameters.R
index 388ef50b5fc9df7cf8f89b1fbf20b6872a7b1987..2dd20cf46dbfae0bec451dacc8e5885108896621 100644
--- a/R/InsuranceParameters.R
+++ b/R/InsuranceParameters.R
@@ -255,7 +255,11 @@ InsuranceContract.Values = list(
 #'               month are relevant.}
 #'     \item{\code{$balanceSheetMethod}}{How to interpolate the balance sheet
 #'               reserves (at the balandeSheetDate) from the yearly contractual
-#'               reserves.}
+#'               reserves. Either a string "30/360", "act/act", "act/360", "act/365"
+#'               or a function with signature \code{balanceSheetMethod(params, contractDates, balanceDates)}
+#'               that returns a vector of coefficients for each year to
+#'               interpolate the reserves available at the given \code{contractDates}
+#'               for the desirec \code{balanceDates}}}
 #'     \item{\code{$surrenderValueCalculation}}{A function describing the surrender
 #'               value calculation.}
 #'     \item{\code{$premiumFrequencyOrder}}{Order of the approximation for
diff --git a/R/InsuranceTarif.R b/R/InsuranceTarif.R
index c978c1102fbc5f7fedafd8a2d23e8806bf2b0ee2..7f3a26b5c7b8696a749ae2071b67955125ba44d6 100644
--- a/R/InsuranceTarif.R
+++ b/R/InsuranceTarif.R
@@ -1082,7 +1082,9 @@ InsuranceTarif = R6Class(
       contractDates = params$ContractData$contractClosing + years(1:years);
       balanceDates = balanceDate + years(1:years - 1);
 
-      if (params$ActuarialBases$balanceSheetMethod == "30/360") {
+      if (is.function(params$ActuarialBases$balanceSheetMethod)) {
+        baf = params$ActuarialBases$balanceSheetMethod(params = params, contractDates = contractDates, balanceDates = balanceDates)
+      } else if (params$ActuarialBases$balanceSheetMethod == "30/360") {
         baf = ((month(balanceDates + days(1)) - month(contractDates) - 1) %% 12 + 1) / 12
       } else if (params$ActuarialBases$balanceSheetMethod == "act/act") {
         baf = as.numeric((balanceDates + days(1)) - contractDates, units = "days" ) / as.numeric(balanceDates - (balanceDates - years(1)), units = "days")