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

  1. #!/usr/bin/perl
  2. #********************************************************************
  3. #
  4. #  term.pl :  This script computes the number of interest periods or
  5. #             months left for a loan given the Amount-Owed, 
  6. #             Interest-Rate and Monthly-Payment.
  7. #
  8. #  G. K. Fenton  1/1997
  9. #
  10. #********************************************************************
  11. #
  12. # Definitions of main variables...
  13. #   $amt_owed = Total amount left to pay on loan.
  14. #   $I        = Interest Rate divided by 12 for units of Months then
  15. #               divided by 100 to put into a percentage format.
  16. #   $payment  = Monthly payment of existing loan.
  17. #
  18. #   $term     = Number of Monthly payments to go...
  19. #
  20. #********************************************************************
  21. #
  22. # $Id: term.pl,v 2.2 1997/01/16 03:29:15 curt Exp $
  23. # (Log is kept at end of this file)
  24. #
  25.  
  26.  
  27.  
  28. #  Process the Command Line Arguments
  29. # print @ARGV,"\n";
  30. # print $#ARGV+1,"\n";
  31.  
  32.   if ($#ARGV+1 < 6) {
  33.      print "\n\n term.pl :  This script computes the number of interest periods Left to Pay.\n\n";
  34.      print " Usage: term.pl [-a <amount>] [-i <int_rate>] [-p <payment>]\n\n";
  35.      print "\n Example: term.pl -a 100000 -i 7.0 -p 871.00\n\n";
  36.      print " Where,  -a --> Amount left to pay on Loan.\n";
  37.      print "         -i --> Annual Interest Percentage Rate.\n";
  38.      print "         -p --> Monthly payment of Loan.\n\n";
  39.      exit(1);
  40.   } 
  41.  
  42.  
  43.   $i = 0;
  44.   foreach (@ARGV) {
  45.      if ($ARGV[$i] eq "-a") {  # Get the Amount Left to Pay.
  46.         $amt_owed = $ARGV[$i+1];
  47.      }
  48.      if ($ARGV[$i] eq "-i") {  # Get the Annual Interest Rate.
  49.         $I = $ARGV[$i+1];
  50.         $I = $I/12.0/100.0;    # Put into Monthly percentage Units.
  51.      }
  52.      if ($ARGV[$i] eq "-p") {  # Get the Monthly Payment.
  53.         $payment = $ARGV[$i+1];
  54.      } 
  55.      $i++;
  56.   }
  57.  
  58.   $tmp_var0  = $I*(1.0 + $I)*$amt_owed/$payment; 
  59.   if ($tmp_var0 > 1.0) {
  60.     $tmp_var0  = $I*(1.0 + $I)*$amt_owed; 
  61.     print "\n\n  WARNING:  You will never get out DEBT\n";
  62.     print "            with this size of Payment!!!\n\n";
  63.     print "   Your Payment needs to be greater than: \$$payment\/Month\n\n";
  64.     printf("   Try Paying at least  \$%7.2f\/month\n", $tmp_var0);
  65.     print "   And be Prepared for a long life of PAYMENTS...\n\n";
  66.  
  67.     $tmp_var1  = log($I);
  68.     $tmp_var2  = log(1.0 + $I);
  69.  
  70.     $term      = -1.0*$tmp_var1/$tmp_var2;
  71.     printf("\n Time with suggested payment = %4.0f Months\n\n", $term);
  72.  
  73.     exit(0);
  74.   }
  75.  
  76.   $tmp_var1  = log(1.0 - $tmp_var0 + $I);
  77.   $tmp_var2  = log(1.0 + $I);
  78.  
  79.   $term      = -1.0*$tmp_var1/$tmp_var2;
  80.  
  81.   printf("\n Time Left to Pay on Existing Loan = %4.0f Months\n\n", $term);
  82.  
  83.  
  84.   exit(0);
  85.  
  86.  
  87. # ----------------------------------------------------------------------------
  88. # $Log: term.pl,v $
  89. # Revision 2.2  1997/01/16 03:29:15  curt
  90. # Check to see if the payment is too small and makes a suggestion
  91. # to a workable minimum payment.
  92. #
  93. # Revision 2.1  1997/01/10 19:05:10  curt
  94. # Initial revision.
  95. #
  96.  
  97.