[Back to MISC SWAG index] [Back to Main SWAG index] [Original]

    program amortization_schedule;

      { smaller than what exists in swag now and doesn't need to know the
    payment...just the APR and terms (what you hear at the loan office
    anyway)...then determines an amortization schedule }

      var
        loan_left, loan_amount, interest, loan_payment, apr, t: real;
        number_periods, i: integer;
        outfile: text;

      function power(x, y: real):real;
        begin
          power := exp(y*ln(x));
        end;

      begin
        assign(outfile, 'AMORT.TXT');
        rewrite(outfile);
        writeln('Loan Amortization Schedule (assumes entry of yearly interest',
                ' rate and # of months of payment (made at end of month)');
        writeln('Omit all $ signs.');
        write('What is the APR of the loan? ');
        readln(t);
        apr := t/100/12;
        write('What is the # of payments in the loan (made monthly)?');
        readln(number_periods);
        write('How much is the loan for?');
        readln(loan_amount);
        loan_payment := loan_amount/((1-(1/power(1+apr,number_periods)))/apr);
        writeln(outfile, 'Amortization Report':25);
        writeln(outfile, t:0:2, '% interest, ', number_periods,
                       ' monthly payments, Loan of $', loan_amount:0:2);
        writeln(outfile);
        writeln(outfile, 'Your loan payment is $', loan_payment:0:2);
        writeln(outfile);
        writeln(outfile, 'Months, payment a month, interest paid,',
                         ' principal paid, loan amount pending');
        for i := 1 to number_periods do
          begin
            interest := loan_amount * apr;
            loan_left := loan_payment - interest;
            loan_amount := loan_amount - loan_left;
            writeln(outfile, i:4, loan_payment:16:2, interest:16:2,
                    loan_left:16:2, loan_amount:16:2);
          end;
        close(outfile);
        writeln('AMORT.TXT report generated.');
      end.

[Back to MISC SWAG index] [Back to Main SWAG index] [Original]