# Interest Accrual Calculation

### Determine Dates to Accrue From and Accrue To

%InlineCode{StartDate}%:

- Int Paid To date from the Loan Detail Form

%InlineCode{EndDate}%:

- Date the user enters as the Accrual Apply date
- Last day of the month by convention

## For USGA

### Calculate Number of Days to Accrue For

#CodeBlock[NumDaysToAccrue = EndDate - StartDate + 1]#

IF Feb 29 falls between %InlineCode{StartDate}% and %InlineCode{EndDate}% THEN subtract 1 from %InlineCode{NumDaysToAccrue}% (Actual/365 calculation treats every year as though it had 365 days)

### Calculate the Interest

%InlineCode{OriginalValue}%: Face value of the bond

%InlineCode{Interest}%: Coupon rate as displayed on Loan Form (ie, 4.25% is 4.25, not 0.0425 or 1.0425)

#CodeBlock[Accrued Interest = Round(OriginalValue * Interest * NumDaysToAccrue / 36500, 2)]#

## For Mortgages and Mortgage-Backed Securities (MBS)

The accrued interest is calculated a month at a time to allow for proper handling of uncollectible interest.

### Go From StartDate to EndDate One Month at a Time

Starting with the %InlineCode{StartDate}% calculated previously, repeat the following steps for each month until %InlineCode{EndDate}% is reached.

### Determine Current Date to Use

%InlineCode{CurrDate}%: Current date

- Use last day of current month as the current date
- Use Feb 28 instead of Feb 29 (ie, ignore leap years)

### Get Effective Interest Rate and Next Payment Amount

%InlineCode{EffIntRate}%: Effective interest rate

- Remains the same for fixed rate loans
- May change from one month to the next for adjustable rate loans

%InlineCode{NextPmtAmtDue}%: Next payment amount due

- For adjustable rate loans, users have the ability to enter future payment amounts; if there are entries for the loan being processed, the system will use them
- This amount is used to predict drawdown of the principal balance

### Calculate Interest Accrual & Service Fees for This Month

%InlineCode{RemBal}%: Remaining principal balance

- Add back in any principal payments received between now and %InlineCode{CurrDate}% to get the remaining principal balance for the instrument as of %InlineCode{CurrDate}%

%InlineCode{IntAccrued}%: Interest accrued this month

#CodeBlock[IntAccrued = RemBal * EffIntRate / 1200]#

Draw down balance by assuming timely payments

#CodeBlock[PrinPmtExpected = NextPmtAmtDue – Round(IntAccrued, 2)]#

#CodeBlock[RemBal = RemBal – PrinPmtExpected]#

- If %InlineCode{PrinPmtExpected}% or %InlineCode{RemBal}% are negative, set them equal to zero

### Allow for Partial Interest Accrual during the Purchase Month

IF we are in the month this instrument was purchased and the overall start date (as calculated above) is after the first of the month then:

%InlineCode{PctOfMonth}%: percentage of month to calculate interest accrual

#CodeBlock[PctOfMonth = (30 – StartDay – 1) / 30]#

#CodeBlock[IntAccrued = IntAccrued * PctOfMonth]#

### Determine Service Fees

#CodeBlock[IntAccrued = Round(IntAccrued, 2)]#

%InlineCode{Service}%: Servicing fee rate as displayed on Loan Form (ie, 0.375% is 0.375, not 0.00375 or 1.00375)

%InlineCode{ServiceFees}%: Dollar amount of service fees owed for this month

#CodeBlock[ServiceFees = Round(IntAccrued * Service / EffIntRate, 2)]#

### Accrue Interest and Service Fees

%InlineCode{MonthsTilDlq}%: number of months a loan must be past due before considered delinquent

#CodeBlock[MonthsTilDlq = 3]#

%InlineCode{NextPmtDate}%: date the next payment is due

- Equal to the Next Due date from the most recent Receipt

%InlineCode{AccInt}%: accrued interest

- Can have up to four months of interest accrued here
- 1 month of non-delinquent interest
- 3 months of delinquent interest

%InlineCode{SvcFee}%: service fees

%InlineCode{UncolInt}%: uncollectible interest

- Interest accrued once the loan enters non-accrual status (ie, more than 3 months past due)

%InlineCode{SvcFee90}%: service fees unlikely to be owed

- Service fees accrued once the loan enters non-accrual status

IF the number of months between the current month and the %InlineCode{NextPmtDate}% is greater than or equal to %InlineCode{MonthsTilDlq}% THEN:

- Loan is in non-accrual status this month

#CodeBlock[UncolInt = UncolInt + IntAccrued]#

#CodeBlock[SvcFee90 = SvcFee90 + ServiceFees]#

OTHERWISE:

- Loan is accruing interest this month

#CodeBlock[AccInt = AccInt + IntAccrued]#

#CodeBlock[SvcFee = SvcFee + ServiceFees]#

### Repeat for the next Month

If we have not reached the %InlineCode{EndDate}% return to Determine Current Date to Use