**[**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**]**