home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol072 / pay.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1984-04-29  |  1.5 KB  |  69 lines

  1. {Donated by Warren Smith, Feb 1982}
  2.  
  3. Program PAYMENTS ;
  4.  
  5. Var    AnnRate, Years, Amount, Monthly : real ;
  6.     Dollars, Cents_tens, Cents_ones : integer ;
  7. {--------------------------------------------
  8. I modified Screen Clear since the original was an
  9. external so you'll have to change this (maybe).
  10.             ----Charlie        }
  11. Procedure ScreenClr;
  12.  
  13. BEGIN
  14.     WRITELN(CHR(26));
  15. END;
  16.  
  17. Function Pmt (Amount, AnnRate, Years : real) : real ;
  18.  
  19.   Var
  20.     MonRate, Months : real ;
  21.  
  22.   Function XTOY (X, Y : real) : real ;
  23.  
  24.     Begin { XTOY }
  25.     If (Y = 0.0) then
  26.       XTOY := 1.0
  27.     else
  28.       If (Y = 1.0) then
  29.         XTOY := X
  30.       else
  31.         If (Y < 0.0) then
  32.           XTOY := 1.0 / exp(-Y * ln(X))
  33.         else
  34.           XTOY := exp(Y * ln(X))
  35.     end;  { XTOY }
  36.  
  37.   Begin { Pmt }
  38.   MonRate := AnnRate / 100.0 / 12.0 ;
  39.   Months := Years * 12.0 ;
  40.   Pmt := Amount * MonRate / (1.0 - XTOY(1.0+MonRate,-Months)) ;
  41.   End;  { Pmt }
  42.  
  43. Begin { Main }
  44.  
  45. ScreenClr; ;
  46. Writeln ;
  47. Writeln ;
  48. Writeln('Input the following:') ;
  49. Writeln ;
  50. Writeln('  Annual    Years    Amount') ;
  51. Writeln('Percentage  before  Financed') ;
  52. Writeln('   Rate     Paid') ;
  53. Writeln ;
  54. Readln (AnnRate, Years, Amount) ;
  55. Monthly := Pmt(Amount, AnnRate, Years) ;
  56. Writeln ;
  57. Writeln ;
  58. Dollars := Trunc(Monthly) ;
  59. Cents_tens := Trunc((Monthly-Dollars)*10.0) ;
  60. Cents_ones := Trunc((Monthly-Dollars)*100.0) mod 10 ;
  61. Writeln ('Monthly payments : $', Dollars:1,'.',Cents_tens:1,Cents_ones:1) ;
  62. Writeln ;
  63. Writeln ;
  64. Writeln ;
  65. Writeln ;
  66. Writeln
  67.  
  68. End.  { dummy }
  69.