{Donated by Warren Smith, Feb 1982}

Program PAYMENTS ;

Var	AnnRate, Years, Amount, Monthly : real ;
	Dollars, Cents_tens, Cents_ones : integer ;
{--------------------------------------------
I modified Screen Clear since the original was an
external so you'll have to change this (maybe).
			----Charlie		}
Procedure ScreenClr;

BEGIN
	WRITELN(CHR(26));
END;

Function Pmt (Amount, AnnRate, Years : real) : real ;

  Var
	MonRate, Months : real ;

  Function XTOY (X, Y : real) : real ;

    Begin { XTOY }
    If (Y = 0.0) then
      XTOY := 1.0
    else
      If (Y = 1.0) then
        XTOY := X
      else
        If (Y < 0.0) then
          XTOY := 1.0 / exp(-Y * ln(X))
        else
          XTOY := exp(Y * ln(X))
    end;  { XTOY }

  Begin { Pmt }
  MonRate := AnnRate / 100.0 / 12.0 ;
  Months := Years * 12.0 ;
  Pmt := Amount * MonRate / (1.0 - XTOY(1.0+MonRate,-Months)) ;
  End;  { Pmt }

Begin { Main }

ScreenClr; ;
Writeln ;
Writeln ;
Writeln('Input the following:') ;
Writeln ;
Writeln('  Annual    Years    Amount') ;
Writeln('Percentage  before  Financed') ;
Writeln('   Rate     Paid') ;
Writeln ;
Readln (AnnRate, Years, Amount) ;
Monthly := Pmt(Amount, AnnRate, Years) ;
Writeln ;
Writeln ;
Dollars := Trunc(Monthly) ;
Cents_tens := Trunc((Monthly-Dollars)*10.0) ;
Cents_ones := Trunc((Monthly-Dollars)*100.0) mod 10 ;
Writeln ('Monthly payments : $', Dollars:1,'.',Cents_tens:1,Cents_ones:1) ;
Writeln ;
Writeln ;
Writeln ;
Writeln ;
Writeln

End.  { dummy }

