home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / X11R6 / lib / X11 / cbb / contrib / loan.pl < prev    next >
Perl Script  |  1998-10-07  |  4KB  |  113 lines

  1. #!/usr/bin/perl
  2. #********************************************************************
  3. #
  4. #  loan.pl :  Script computes an amortization of a potential loan.
  5. #
  6. #  G. K. Fenton  1/1997
  7. #
  8. #********************************************************************
  9. #
  10. # Definitions of main variables...
  11. #   $price    = Total Cost of Item.
  12. #   $down_pmt = Down Payment which takes away from Price.
  13. #   $N        = Term of Loan in units of (Months).
  14. #   $I        = Interest Rate divided by 12 for units of Months then
  15. #               divided by 100 to put into a percentage format.
  16. #   $dataout  = Plot file name used by GnuPlot, Default name
  17. #               is 'data'.
  18. #
  19. #********************************************************************
  20. #
  21. # $Id: loan.pl,v 2.2 1997/01/10 19:05:10 curt Exp $
  22. # (Log is kept at end of this file)
  23.  
  24.  
  25.   $dataout = "data";
  26.  
  27.  
  28. #  Process the Command Line Arguments
  29. # print @ARGV,"\n";
  30. # print $#ARGV+1,"\n";
  31.  
  32.   if ($#ARGV+1 < 8) {
  33.      print "\n\n loan.pl :  This Script computes an amortization of a potential loan.\n\n";
  34.      print " Usage: loan.pl [-p <price>] [-d <down_pmt>] [-t <term>] [-i <int_rate>] [-o <name>]\n\n";
  35.      print "\n Example: loan -p 100000 -d 10000 -t 360 -i 7.0 \n\n";
  36.      print " Where,  -p --> Price to be financed.\n";
  37.      print "         -d --> Down Payment.\n";
  38.      print "         -t --> Loan Term in Months.\n";
  39.      print "         -i --> Annual Percentage Rate.\n";
  40.      print "         -o --> Output data file name.\n\n";
  41.      exit(1);
  42.   } 
  43.  
  44.   $i = 0;
  45.   foreach (@ARGV) {
  46.      if ($ARGV[$i] eq "-p") {  # Get the Price or Cost of Loan.
  47.         $price = $ARGV[$i+1];
  48.      }
  49.      if ($ARGV[$i] eq "-d") {  # Get the Down Payment for Loan.
  50.         $down_pmt = $ARGV[$i+1];
  51.      }
  52.      if ($ARGV[$i] eq "-t") {  # Get the Term of the Loan in Months.
  53.         $N = $ARGV[$i+1];
  54.      } 
  55.      if ($ARGV[$i] eq "-i") {  # Get the Interest Rate of the Loan.
  56.         $I = $ARGV[$i+1];
  57.         $I = $I/12.0/100.0;    # Put into Monthly percentage Units.
  58.      }
  59.      if ($ARGV[$i] eq "-o") {  # Get the output data file name.
  60.         $dataout = $ARGV[$i+1];
  61.      } 
  62.      $i++;
  63.   }
  64.  
  65.   $loan_amt = $price - $down_pmt;
  66.   $tmp_var  = (1.0 + $I)**$N;
  67.   $payment  = $loan_amt * $I * $tmp_var/($tmp_var - 1.0);
  68.  
  69.   open(FOUT, ">$dataout") || die "\n\n Warning: Can't open output file '$dataout' !\n\n";
  70.  
  71.   $balance[0]  = $loan_amt;
  72.   for( $i=1 ; $i<=$N ; $i++ ) {
  73.       $balance[$i]   = $balance[$i-1] * (1 + $I) - $payment;
  74.       $interest[$i]  = $balance[$i-1] * $I;
  75.       $principal[$i] = $payment - $interest[$i];
  76.       $equity[$i]    = $price   - $balance[$i];
  77.  
  78.     print FOUT " $i, $balance[$i], $equity[$i], $interest[$i], $principal[$i]\n";
  79.   }
  80.   close(FOUT);
  81.  
  82.   $sum_payment   = 0.0;
  83.   $sum_principal = 0.0;
  84.   $sum_interest  = 0.0;
  85.   for( $i=1 ; $i<=$N ; $i++ ) {
  86.       $sum_payment   += $payment;
  87.       $sum_principal += $principal[$i];
  88.       $sum_interest  += $interest[$i];
  89.   }
  90.  
  91.  
  92.   printf("\n     Cost Amount     = \$%7.2f\n", $price);
  93.   printf("     Down Payment    = \$%7.2f\n", $down_pmt);
  94.   printf("     Loan Amount     = \$%7.2f\n", $loan_amt);
  95.   printf(" >>> Monthly Payment = \$%7.2f <<<\n\n", $payment);
  96.   printf("------- Data over Life of Loan -------\n");
  97.   printf("     Principal Only  = \$%7.2f\n", $sum_principal);
  98.   printf("     Interest Only   = \$%7.2f\n", $sum_interest);
  99.   printf("     Total Payment   = \$%7.2f\n", $sum_payment);
  100.  
  101.   printf("\n  Created Plot File < $dataout >!\n");
  102.   printf("    Use GnuPlot to see the curves...\n\n");
  103.  
  104.  
  105.   exit(0);
  106.  
  107.  
  108. # ----------------------------------------------------------------------------
  109. # $Log: loan.pl,v $
  110. # Revision 2.2  1997/01/10 19:05:10  curt
  111. # Initial revision.
  112. #
  113.