/* REXX LOAN AMORTIZATION */
SAY "                      LOAN AMORTIZATION"
SAY "ENTER INTEREST RATE:               "
PULL INTEREST
INTEREST = INTEREST / 100
SAY "ENTER AMOUNT OF LOAN:              "
PULL LOAN_AMOUNT
SAY "ENTER NUMBER OF YEARS OF LOAN:     "
PULL YEARS
SAY "ENTER NUMBER OF PAYMENTS PER YEAR: "
PULL PAYMENTS_PER_YEAR
NO_OF_PAYMENTS = YEARS * PAYMENTS_PER_YEAR
I = INTEREST / PAYMENTS_PER_YEAR
B = 1 + I
R = LOAN_AMOUNT * I / (1 - 1 / B ** NO_OF_PAYMENTS)
SAY " "
PAYMENT_AMOUNT = TRUNC( ( ( R * 100 ) / 100 ),2)
SAY "AMOUNT PER PAYMENT:     "  PAYMENT_AMOUNT
TOTAL_INTEREST = ( ( R * NO_OF_PAYMENTS - LOAN_AMOUNT ) * 100 ) / 100
SAY "TOTAL INTEREST:       " TRUNC( TOTAL_INTEREST, 2)
SAY " "
SAY "PAYMENT NO.     INTEREST    PRINCIPAL    BALANCE"
BALANCE = LOAN_AMOUNT
PAYMENT_NUMBER = 0
DO PAYMENT_NUMBER = 1 TO NO_OF_PAYMENTS - 1 BY 1
   LOAN_INTEREST = BALANCE *  I
   PRINCIPAL = R - LOAN_INTEREST
   BALANCE = BALANCE - PRINCIPAL
   LOAN_INTEREST = TRUNC( ( ( LOAN_INTEREST * 100 ) / 100) , 2 )
   PRINCIPAL = TRUNC( ( ( PRINCIPAL * 100 ) / 100 ) , 2 )
   BALANCE = TRUNC( ( ( BALANCE * 100 ) / 100 ) , 2 )
   SAY "     " PAYMENT_NUMBER "       " LOAN_INTEREST "      " ,
       PRINCIPAL "       " BALANCE
END
SAY TRUNC( ( (BALANCE * 1) * 100 / 100 ) ),
    TRUNC( ( (R - BALANCE * I ) * 100 ) / 100 )
SAY PAYMENT_NUMBER  "LAST PAYMENT " ,
    TRUNC( ( ( BALANCE * I + BALANCE ) * 100 ) / 100 )

    Source: geocities.com/swede27410