Header menu logo FSharp.Finance.Personal

Payment Schedule Examples

Basic example #1

The following example shows the scheduled for a car loan of £10,000 taken out on 7 February 2024 with 36 monthly repayments:

#r "nuget:FSharp.Finance.Personal"

open FSharp.Finance.Personal
open Calculation
open DateDay
open Scheduling

let scheduleParameters =
    {
        AsOfDate = Date(2024, 02, 07)
        StartDate = Date(2024, 02, 07)
        Principal = 10000_00L<Cent>
        ScheduleConfig = AutoGenerateSchedule {
            UnitPeriodConfig = UnitPeriod.Monthly(1, 2024, 3, 7)
            PaymentCount = 36
            MaxDuration = Duration.Unlimited
        }
        PaymentConfig = {
            ScheduledPaymentOption = AsScheduled
            CloseBalanceOption = LeaveOpenBalance
            PaymentRounding = RoundUp
            MinimumPayment = DeferOrWriteOff 50L<Cent>
            PaymentTimeout = 3<DurationDay>
        }
        FeeConfig = Fee.Config.initialRecommended
        ChargeConfig = Charge.Config.initialRecommended
        InterestConfig = {
            Method = Interest.Method.Simple
            StandardRate = Interest.Rate.Annual (Percent 6.9m)
            Cap = Interest.Cap.zero
            InitialGracePeriod = 0<DurationDay>
            PromotionalRates = [||]
            RateOnNegativeBalance = Interest.Rate.Zero
            AprMethod = Apr.CalculationMethod.UnitedKingdom 3
            InterestRounding = RoundDown
        }
    }
    
let schedule = scheduleParameters |> calculate AroundZero

schedule
{ AsOfDay = 0
  Items =
   [|{ Day = 0
       ScheduledPayment = 
       SimpleInterest = 0L
       InterestPortion = 0L
       PrincipalPortion = 0L
       InterestBalance = 0L
       PrincipalBalance = 1000000L
       TotalSimpleInterest = 0L
       TotalInterest = 0L
       TotalPrincipal = 0L }; { Day = 29
                                ScheduledPayment = original 308.29
                                SimpleInterest = 5482L
                                InterestPortion = 5482L
                                PrincipalPortion = 25347L
                                InterestBalance = 0L
                                PrincipalBalance = 974653L
                                TotalSimpleInterest = 5482L
                                TotalInterest = 5482L
                                TotalPrincipal = 25347L };
     { Day = 60
       ScheduledPayment = original 308.29
       SimpleInterest = 5711L
       InterestPortion = 5711L
       PrincipalPortion = 25118L
       InterestBalance = 0L
       PrincipalBalance = 949535L
       TotalSimpleInterest = 11193L
       TotalInterest = 11193L
       TotalPrincipal = 50465L }; { Day = 90
                                    ScheduledPayment = original 308.29
                                    SimpleInterest = 5385L
                                    InterestPortion = 5385L
                                    PrincipalPortion = 25444L
                                    InterestBalance = 0L
                                    PrincipalBalance = 924091L
                                    TotalSimpleInterest = 16578L
                                    TotalInterest = 16578L
                                    TotalPrincipal = 75909L };
     { Day = 121
       ScheduledPayment = original 308.29
       SimpleInterest = 5415L
       InterestPortion = 5415L
       PrincipalPortion = 25414L
       InterestBalance = 0L
       PrincipalBalance = 898677L
       TotalSimpleInterest = 21993L
       TotalInterest = 21993L
       TotalPrincipal = 101323L }; { Day = 151
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 5096L
                                     InterestPortion = 5096L
                                     PrincipalPortion = 25733L
                                     InterestBalance = 0L
                                     PrincipalBalance = 872944L
                                     TotalSimpleInterest = 27089L
                                     TotalInterest = 27089L
                                     TotalPrincipal = 127056L };
     { Day = 182
       ScheduledPayment = original 308.29
       SimpleInterest = 5115L
       InterestPortion = 5115L
       PrincipalPortion = 25714L
       InterestBalance = 0L
       PrincipalBalance = 847230L
       TotalSimpleInterest = 32204L
       TotalInterest = 32204L
       TotalPrincipal = 152770L }; { Day = 213
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 4964L
                                     InterestPortion = 4964L
                                     PrincipalPortion = 25865L
                                     InterestBalance = 0L
                                     PrincipalBalance = 821365L
                                     TotalSimpleInterest = 37168L
                                     TotalInterest = 37168L
                                     TotalPrincipal = 178635L };
     { Day = 243
       ScheduledPayment = original 308.29
       SimpleInterest = 4658L
       InterestPortion = 4658L
       PrincipalPortion = 26171L
       InterestBalance = 0L
       PrincipalBalance = 795194L
       TotalSimpleInterest = 41826L
       TotalInterest = 41826L
       TotalPrincipal = 204806L }; { Day = 274
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 4660L
                                     InterestPortion = 4660L
                                     PrincipalPortion = 26169L
                                     InterestBalance = 0L
                                     PrincipalBalance = 769025L
                                     TotalSimpleInterest = 46486L
                                     TotalInterest = 46486L
                                     TotalPrincipal = 230975L };
     { Day = 304
       ScheduledPayment = original 308.29
       SimpleInterest = 4361L
       InterestPortion = 4361L
       PrincipalPortion = 26468L
       InterestBalance = 0L
       PrincipalBalance = 742557L
       TotalSimpleInterest = 50847L
       TotalInterest = 50847L
       TotalPrincipal = 257443L }; { Day = 335
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 4351L
                                     InterestPortion = 4351L
                                     PrincipalPortion = 26478L
                                     InterestBalance = 0L
                                     PrincipalBalance = 716079L
                                     TotalSimpleInterest = 55198L
                                     TotalInterest = 55198L
                                     TotalPrincipal = 283921L };
     { Day = 366
       ScheduledPayment = original 308.29
       SimpleInterest = 4196L
       InterestPortion = 4196L
       PrincipalPortion = 26633L
       InterestBalance = 0L
       PrincipalBalance = 689446L
       TotalSimpleInterest = 59394L
       TotalInterest = 59394L
       TotalPrincipal = 310554L }; { Day = 394
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 3649L
                                     InterestPortion = 3649L
                                     PrincipalPortion = 27180L
                                     InterestBalance = 0L
                                     PrincipalBalance = 662266L
                                     TotalSimpleInterest = 63043L
                                     TotalInterest = 63043L
                                     TotalPrincipal = 337734L };
     { Day = 425
       ScheduledPayment = original 308.29
       SimpleInterest = 3881L
       InterestPortion = 3881L
       PrincipalPortion = 26948L
       InterestBalance = 0L
       PrincipalBalance = 635318L
       TotalSimpleInterest = 66924L
       TotalInterest = 66924L
       TotalPrincipal = 364682L }; { Day = 455
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 3603L
                                     InterestPortion = 3603L
                                     PrincipalPortion = 27226L
                                     InterestBalance = 0L
                                     PrincipalBalance = 608092L
                                     TotalSimpleInterest = 70527L
                                     TotalInterest = 70527L
                                     TotalPrincipal = 391908L };
     { Day = 486
       ScheduledPayment = original 308.29
       SimpleInterest = 3563L
       InterestPortion = 3563L
       PrincipalPortion = 27266L
       InterestBalance = 0L
       PrincipalBalance = 580826L
       TotalSimpleInterest = 74090L
       TotalInterest = 74090L
       TotalPrincipal = 419174L }; { Day = 516
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 3293L
                                     InterestPortion = 3293L
                                     PrincipalPortion = 27536L
                                     InterestBalance = 0L
                                     PrincipalBalance = 553290L
                                     TotalSimpleInterest = 77383L
                                     TotalInterest = 77383L
                                     TotalPrincipal = 446710L };
     { Day = 547
       ScheduledPayment = original 308.29
       SimpleInterest = 3242L
       InterestPortion = 3242L
       PrincipalPortion = 27587L
       InterestBalance = 0L
       PrincipalBalance = 525703L
       TotalSimpleInterest = 80625L
       TotalInterest = 80625L
       TotalPrincipal = 474297L }; { Day = 578
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 3080L
                                     InterestPortion = 3080L
                                     PrincipalPortion = 27749L
                                     InterestBalance = 0L
                                     PrincipalBalance = 497954L
                                     TotalSimpleInterest = 83705L
                                     TotalInterest = 83705L
                                     TotalPrincipal = 502046L };
     { Day = 608
       ScheduledPayment = original 308.29
       SimpleInterest = 2824L
       InterestPortion = 2824L
       PrincipalPortion = 28005L
       InterestBalance = 0L
       PrincipalBalance = 469949L
       TotalSimpleInterest = 86529L
       TotalInterest = 86529L
       TotalPrincipal = 530051L }; { Day = 639
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 2754L
                                     InterestPortion = 2754L
                                     PrincipalPortion = 28075L
                                     InterestBalance = 0L
                                     PrincipalBalance = 441874L
                                     TotalSimpleInterest = 89283L
                                     TotalInterest = 89283L
                                     TotalPrincipal = 558126L };
     { Day = 669
       ScheduledPayment = original 308.29
       SimpleInterest = 2505L
       InterestPortion = 2505L
       PrincipalPortion = 28324L
       InterestBalance = 0L
       PrincipalBalance = 413550L
       TotalSimpleInterest = 91788L
       TotalInterest = 91788L
       TotalPrincipal = 586450L }; { Day = 700
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 2423L
                                     InterestPortion = 2423L
                                     PrincipalPortion = 28406L
                                     InterestBalance = 0L
                                     PrincipalBalance = 385144L
                                     TotalSimpleInterest = 94211L
                                     TotalInterest = 94211L
                                     TotalPrincipal = 614856L };
     { Day = 731
       ScheduledPayment = original 308.29
       SimpleInterest = 2257L
       InterestPortion = 2257L
       PrincipalPortion = 28572L
       InterestBalance = 0L
       PrincipalBalance = 356572L
       TotalSimpleInterest = 96468L
       TotalInterest = 96468L
       TotalPrincipal = 643428L }; { Day = 759
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 1887L
                                     InterestPortion = 1887L
                                     PrincipalPortion = 28942L
                                     InterestBalance = 0L
                                     PrincipalBalance = 327630L
                                     TotalSimpleInterest = 98355L
                                     TotalInterest = 98355L
                                     TotalPrincipal = 672370L };
     { Day = 790
       ScheduledPayment = original 308.29
       SimpleInterest = 1920L
       InterestPortion = 1920L
       PrincipalPortion = 28909L
       InterestBalance = 0L
       PrincipalBalance = 298721L
       TotalSimpleInterest = 100275L
       TotalInterest = 100275L
       TotalPrincipal = 701279L }; { Day = 820
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 1694L
                                     InterestPortion = 1694L
                                     PrincipalPortion = 29135L
                                     InterestBalance = 0L
                                     PrincipalBalance = 269586L
                                     TotalSimpleInterest = 101969L
                                     TotalInterest = 101969L
                                     TotalPrincipal = 730414L };
     { Day = 851
       ScheduledPayment = original 308.29
       SimpleInterest = 1579L
       InterestPortion = 1579L
       PrincipalPortion = 29250L
       InterestBalance = 0L
       PrincipalBalance = 240336L
       TotalSimpleInterest = 103548L
       TotalInterest = 103548L
       TotalPrincipal = 759664L }; { Day = 881
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 1363L
                                     InterestPortion = 1363L
                                     PrincipalPortion = 29466L
                                     InterestBalance = 0L
                                     PrincipalBalance = 210870L
                                     TotalSimpleInterest = 104911L
                                     TotalInterest = 104911L
                                     TotalPrincipal = 789130L };
     { Day = 912
       ScheduledPayment = original 308.29
       SimpleInterest = 1235L
       InterestPortion = 1235L
       PrincipalPortion = 29594L
       InterestBalance = 0L
       PrincipalBalance = 181276L
       TotalSimpleInterest = 106146L
       TotalInterest = 106146L
       TotalPrincipal = 818724L }; { Day = 943
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 1062L
                                     InterestPortion = 1062L
                                     PrincipalPortion = 29767L
                                     InterestBalance = 0L
                                     PrincipalBalance = 151509L
                                     TotalSimpleInterest = 107208L
                                     TotalInterest = 107208L
                                     TotalPrincipal = 848491L };
     { Day = 973
       ScheduledPayment = original 308.29
       SimpleInterest = 859L
       InterestPortion = 859L
       PrincipalPortion = 29970L
       InterestBalance = 0L
       PrincipalBalance = 121539L
       TotalSimpleInterest = 108067L
       TotalInterest = 108067L
       TotalPrincipal = 878461L }; { Day = 1004
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 712L
                                     InterestPortion = 712L
                                     PrincipalPortion = 30117L
                                     InterestBalance = 0L
                                     PrincipalBalance = 91422L
                                     TotalSimpleInterest = 108779L
                                     TotalInterest = 108779L
                                     TotalPrincipal = 908578L };
     { Day = 1034
       ScheduledPayment = original 308.29
       SimpleInterest = 518L
       InterestPortion = 518L
       PrincipalPortion = 30311L
       InterestBalance = 0L
       PrincipalBalance = 61111L
       TotalSimpleInterest = 109297L
       TotalInterest = 109297L
       TotalPrincipal = 938889L }; { Day = 1065
                                     ScheduledPayment = original 308.29
                                     SimpleInterest = 358L
                                     InterestPortion = 358L
                                     PrincipalPortion = 30471L
                                     InterestBalance = 0L
                                     PrincipalBalance = 30640L
                                     TotalSimpleInterest = 109655L
                                     TotalInterest = 109655L
                                     TotalPrincipal = 969360L };
     { Day = 1096
       ScheduledPayment = original 308.19
       SimpleInterest = 179L
       InterestPortion = 179L
       PrincipalPortion = 30640L
       InterestBalance = 0L
       PrincipalBalance = 0L
       TotalSimpleInterest = 109834L
       TotalInterest = 109834L
       TotalPrincipal = 1000000L }|]
  InitialInterestBalance = 0L
  FinalPaymentDay = 1096
  LevelPayment = 30829L
  FinalPayment = 30819L
  PaymentTotal = 1109834L
  PrincipalTotal = 1000000L
  InterestTotal = 109834L
  Apr =
   (Found (0.0712153070190852089358046044M, 7, 0.000001M),
    ValueSome (Percent 7.100M))
  CostToBorrowingRatio = Percent 10.98M }

It is possible to format the Items property as an HTML table:

let html = schedule.Items |> Formatting.generateHtmlFromArray [||]

$"""<div style="overflow-x: auto;">{html}</div>"""
DayScheduled PaymentSimple InterestInterest PortionPrincipal PortionInterest BalancePrincipal BalanceTotal Simple InterestTotal InterestTotal Principal
00.000.000.000.0010,000.000.000.000.00
29original 308.2954.8254.82253.470.009,746.5354.8254.82253.47
60original 308.2957.1157.11251.180.009,495.35111.93111.93504.65
90original 308.2953.8553.85254.440.009,240.91165.78165.78759.09
121original 308.2954.1554.15254.140.008,986.77219.93219.931,013.23
151original 308.2950.9650.96257.330.008,729.44270.89270.891,270.56
182original 308.2951.1551.15257.140.008,472.30322.04322.041,527.70
213original 308.2949.6449.64258.650.008,213.65371.68371.681,786.35
243original 308.2946.5846.58261.710.007,951.94418.26418.262,048.06
274original 308.2946.6046.60261.690.007,690.25464.86464.862,309.75
304original 308.2943.6143.61264.680.007,425.57508.47508.472,574.43
335original 308.2943.5143.51264.780.007,160.79551.98551.982,839.21
366original 308.2941.9641.96266.330.006,894.46593.94593.943,105.54
394original 308.2936.4936.49271.800.006,622.66630.43630.433,377.34
425original 308.2938.8138.81269.480.006,353.18669.24669.243,646.82
455original 308.2936.0336.03272.260.006,080.92705.27705.273,919.08
486original 308.2935.6335.63272.660.005,808.26740.90740.904,191.74
516original 308.2932.9332.93275.360.005,532.90773.83773.834,467.10
547original 308.2932.4232.42275.870.005,257.03806.25806.254,742.97
578original 308.2930.8030.80277.490.004,979.54837.05837.055,020.46
608original 308.2928.2428.24280.050.004,699.49865.29865.295,300.51
639original 308.2927.5427.54280.750.004,418.74892.83892.835,581.26
669original 308.2925.0525.05283.240.004,135.50917.88917.885,864.50
700original 308.2924.2324.23284.060.003,851.44942.11942.116,148.56
731original 308.2922.5722.57285.720.003,565.72964.68964.686,434.28
759original 308.2918.8718.87289.420.003,276.30983.55983.556,723.70
790original 308.2919.2019.20289.090.002,987.211,002.751,002.757,012.79
820original 308.2916.9416.94291.350.002,695.861,019.691,019.697,304.14
851original 308.2915.7915.79292.500.002,403.361,035.481,035.487,596.64
881original 308.2913.6313.63294.660.002,108.701,049.111,049.117,891.30
912original 308.2912.3512.35295.940.001,812.761,061.461,061.468,187.24
943original 308.2910.6210.62297.670.001,515.091,072.081,072.088,484.91
973original 308.298.598.59299.700.001,215.391,080.671,080.678,784.61
1004original 308.297.127.12301.170.00914.221,087.791,087.799,085.78
1034original 308.295.185.18303.110.00611.111,092.971,092.979,388.89
1065original 308.293.583.58304.710.00306.401,096.551,096.559,693.60
1096original 308.191.791.79306.400.000.001,098.341,098.3410,000.00
Multiple items
namespace FSharp

--------------------
namespace Microsoft.FSharp
namespace FSharp.Finance
namespace FSharp.Finance.Personal
module Calculation from FSharp.Finance.Personal
<summary> convenience functions and options to help with calculations </summary>
module DateDay from FSharp.Finance.Personal
<summary> a .NET Framework polyfill equivalent to the DateOnly structure in .NET Core </summary>
module Scheduling from FSharp.Finance.Personal
<summary> functions for generating a regular payment schedule, with payment amounts, interest and APR </summary>
val scheduleParameters: Parameters
Multiple items
[<Struct>] type Date = new: year: int * month: int * day: int -> Date val Year: int val Month: int val Day: int member AddDays: i: int -> Date member AddMonths: i: int -> Date member AddYears: i: int -> Date member ToDateTime: unit -> DateTime override ToString: unit -> string static member (-) : d1: Date * d2: Date -> TimeSpan ...
<summary> the date at the customer's location - ensure any time-zone conversion is performed before using this - as all calculations are date-only with no time component, summer time or other such time artefacts </summary>

--------------------
Date ()
new: year: int * month: int * day: int -> Date
Multiple items
module Cent from FSharp.Finance.Personal.Calculation
<summary> utility functions for base currency unit values </summary>

--------------------
[<Measure>] type Cent
<summary> the base unit of a currency (cent, penny, øre etc.) </summary>
[<Struct>] type ScheduleConfig = | AutoGenerateSchedule of AutoGenerateSchedule: AutoGenerateSchedule | FixedSchedules of FixedSchedules: FixedSchedule array | CustomSchedule of CustomSchedule: Map<int<OffsetDay>,ScheduledPayment>
<summary> whether a payment plan is generated according to a regular schedule or is an irregular array of payments </summary>
Multiple items
union case ScheduleConfig.AutoGenerateSchedule: AutoGenerateSchedule: AutoGenerateSchedule -> ScheduleConfig
<summary> a schedule based on a unit-period config with a specific number of payments with an auto-calculated amount, optionally limited to a maximum duration </summary>

--------------------
[<Struct>] type AutoGenerateSchedule = { UnitPeriodConfig: Config PaymentCount: int MaxDuration: Duration }
<summary> a regular schedule based on a unit-period config with a specific number of payments with an auto-calculated amount </summary>
module UnitPeriod from FSharp.Finance.Personal
<summary> an unambiguous way to represent regular date intervals and generate schedules based on them note: unit-period definitions are based on US federal legislation but the definitions are universally applicable </summary>
union case UnitPeriod.Config.Monthly: MonthMultiple: int * Year: int * Month: int * Day: int -> UnitPeriod.Config
<summary> (multi-)monthly: every n months starting on the date given by year, month and day, which tracks month-end (see config) </summary>
[<Struct>] type Duration = | Unlimited | Maximum of Length: int<DurationDay> * FromDate: Date
<summary> a length of time in whole days measured from a start date </summary>
union case Duration.Unlimited: Duration
<summary> unrestricted length of time </summary>
type PaymentConfig = { ScheduledPaymentOption: ScheduledPaymentOption CloseBalanceOption: CloseBalanceOption PaymentRounding: Rounding MinimumPayment: MinimumPayment PaymentTimeout: int<DurationDay> }
<summary> how to treat scheduled payments </summary>
[<Struct>] type ScheduledPaymentOption = | AsScheduled | AddChargesAndInterest
<summary> whether to stick to scheduled payment amounts or add charges and interest to them </summary>
union case ScheduledPaymentOption.AsScheduled: ScheduledPaymentOption
<summary> keep to the scheduled payment amounts even if this results in an open balance </summary>
[<Struct>] type CloseBalanceOption = | LeaveOpenBalance | IncreaseFinalPayment | AddSingleExtraPayment | AddMultipleExtraPayments
<summary> how to handle a final balance if not closed: leave it open or modify/add payments at the end of the schedule </summary>
union case CloseBalanceOption.LeaveOpenBalance: CloseBalanceOption
<summary> do not modify the final payment and leave any open balance as is </summary>
union case Rounding.RoundUp: Rounding
<summary> round up to the specified precision (= ceiling) </summary>
[<Struct>] type MinimumPayment = | NoMinimumPayment | DeferOrWriteOff of DeferOrWriteOff: int64<Cent> | ApplyMinimumPayment of ApplyMinimumPayment: int64<Cent>
<summary> how to handle cases where the payment due is less than the minimum that payment providers can process </summary>
union case MinimumPayment.DeferOrWriteOff: DeferOrWriteOff: int64<Cent> -> MinimumPayment
<summary> add the payment due to the next payment or close the balance if the final payment </summary>
[<Measure>] type DurationDay
<summary> a duration of a number of days </summary>
module Fee from FSharp.Finance.Personal
<summary> a product fee &gt; NOTE: differences between fees and charges: &gt; - fees are up-front amounts paid under agreed terms for receiving an advance &gt; - fees are added to the principal balance and therefore accrue interest </summary>
Multiple items
module Config from FSharp.Finance.Personal.Fee
<summary> options specifying the types of fees, their amounts, and any restrictions on these </summary>

--------------------
type Config = { FeeTypes: FeeType array Rounding: Rounding FeeAmortisation: FeeAmortisation SettlementRefund: SettlementRefund }
<summary> options specifying the types of fees, their amounts, and any restrictions on these </summary>
val initialRecommended: Fee.Config
<summary> a default config value, with no fees but recommended settings </summary>
module Charge from FSharp.Finance.Personal
<summary> a penalty charge &gt; NB: differences between charges and fees: &gt; - charges are not up-front amounts, they are incurred as a result of a breach of agreed terms &gt; - charges are not added to the principal balance and do not therefore accrue interest </summary>
Multiple items
module Config from FSharp.Finance.Personal.Charge
<summary> options specifying the types of charges, their amounts, and any restrictions on these </summary>

--------------------
type Config = { ChargeTypes: ChargeType array Rounding: Rounding ChargeHolidays: DateRange array ChargeGrouping: ChargeGrouping LatePaymentGracePeriod: int<DurationDay> }
<summary> options specifying the types of charges, their amounts, and any restrictions on these </summary>
val initialRecommended: Charge.Config
<summary> a default config value, with no charges but recommended settings </summary>
module Interest from FSharp.Finance.Personal
<summary> methods for calculating interest and unambiguously expressing interest rates, as well as enforcing regulatory caps on interest chargeable </summary>
[<Struct>] type Method = | Simple | AddOn
<summary> the method used to calculate the interest </summary>
union case Interest.Method.Simple: Interest.Method
<summary> simple interest method, where interest is based on the principal balance and the number of days outstanding </summary>
Multiple items
module Rate from FSharp.Finance.Personal.Interest

--------------------
[<Struct>] type Rate = | Zero | Annual of Annual: Percent | Daily of Daily: Percent
<summary> the interest rate expressed as either an annual or a daily rate </summary>
union case Interest.Rate.Annual: Annual: Percent -> Interest.Rate
<summary> the annual interest rate, or the daily interest rate multiplied by 365 </summary>
Multiple items
union case Percent.Percent: decimal -> Percent

--------------------
module Percent from FSharp.Finance.Personal.Calculation
<summary> utility functions for percent values </summary>

--------------------
type Percent = | Percent of decimal
<summary> a percentage, e.g. 42%, as opposed to its decimal representation 0.42m </summary>
Multiple items
module Cap from FSharp.Finance.Personal.Interest
<summary> caps on the total interest accruable </summary>

--------------------
[<Struct>] type Cap = { TotalAmount: Amount voption DailyAmount: Amount voption }
<summary> caps on the total interest accruable </summary>
val zero: Interest.Cap
<summary> no cap </summary>
union case Interest.Rate.Zero: Interest.Rate
<summary> a zero rate </summary>
module Apr from FSharp.Finance.Personal
<summary> calculating the APR according to various country-specific regulations </summary>
[<Struct>] type CalculationMethod = | UnitedKingdom of UkPrecision: int | UsActuarial of UsPrecision: int | UnitedStatesRule
<summary> the calculation method used to determine the APR </summary>
union case Apr.CalculationMethod.UnitedKingdom: UkPrecision: int -> Apr.CalculationMethod
<summary> calculates the APR according to UK FCA rules to the stated decimal precision (note that this is two places more than the percent precision) </summary>
union case Rounding.RoundDown: Rounding
<summary> round down to the specified precision (= floor) </summary>
val schedule: SimpleSchedule
val calculate: toleranceOption: TargetTolerance -> sp: Parameters -> SimpleSchedule
<summary> calculates the number of days between two offset days on which interest is chargeable </summary>
union case TargetTolerance.AroundZero: TargetTolerance
<summary> find a solution either side of zero </summary>
val html: string
SimpleSchedule.Items: SimpleItem array
<summary> the items of the schedule </summary>
module Formatting from FSharp.Finance.Personal
<summary> convenience module for generating HTML tables, optimised for amortisation schedules </summary>
val generateHtmlFromArray: hideProperties: string array -> items: 'a array -> string
<summary> generates a formatted HTML table from an array </summary>

Type something to start searching.