% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/chapter16_universal_life.R
\name{ag38_reserve_ul}
\alias{ag38_reserve_ul}
\title{AG 38 reserve calculation}
\usage{
ag38_reserve_ul(
  basic_reserve,
  deficiency_reserve = 0,
  excess_payment,
  nsp_required,
  valuation_nsp,
  surrender_charge = 0
)
}
\arguments{
\item{basic_reserve}{Nonnegative basic reserve.}

\item{deficiency_reserve}{Nonnegative deficiency reserve.}

\item{excess_payment}{Nonnegative excess payment or shadow-fund amount.}

\item{nsp_required}{Positive net single premium required to fully fund the
guarantee.}

\item{valuation_nsp}{Nonnegative valuation net single premium.}

\item{surrender_charge}{Nonnegative surrender charge.}
}
\value{
For scalar inputs, a named list. For vectorized inputs, a data frame
  containing the same calculated quantities.
}
\description{
Computes the prefunding ratio, net additional amount, reduced deficiency
reserve, intermediate reserve, and increased basic reserve.
}
\details{
Scalar inputs preserve the original named-list output. Vectorized inputs
return a data frame with one row per calculation.
}
\examples{
ag38_reserve_ul(
  basic_reserve = 10000,
  deficiency_reserve = 0,
  excess_payment = 60000,
  nsp_required = 100000,
  valuation_nsp = 150000,
  surrender_charge = 5000
)

}
