Q(uick)BASIC Function: NPer#
Quick View
NPer#
A function that returns the number of periods for an investment based on periodic, constant payments and a constant interest rate
Worth knowing
Useful and cross-version information about the programming environments of QBasic and QuickBasic.
Syntax
- NPer# (rate#, pmt#, pv#, fv#, type%, status%)
Description/Parameter(s)
- The argument rate# is the interest rate per period. For example, if you get a car loan at a 10% annual interest rate and make monthly payments, the rate per period would be .10/12, or .0083.
- The pmt# is the payment made each period, and cannot change over the life of the annuity. Typically, pmt# contains principal and interest.
- The argument pv# is the present value, or lump sum that a series of payments to be paid in the future is worth now. For example, when you borrow money to buy a car, the loan amount is the present value to the lender of the monthly car payments you will make.
- The argument fv# is the future value, or cash balance sometime in the future after the final payment is made. The future value of a loan, for example, is 0. As another example, if you think you will need $50,000 in 18 years to pay for your child's education, then $50,000 is the future value.
- The argument status% can be any variable that returns information about the success or failure of the calculation. The value of status% will be 0 if the calculation was successful, and 1 if it was not.
Usage Notes
- An annuity is a series of constant cash payments made over a continuous period of time. An annuity can be a loan (such as a home mortgage), or an investment (such as a monthly savings plan).
- For all arguments, cash you pay out, such as deposits to savings, is represented by negative numbers; cash you receive, such as dividend checks, is represented by positive numbers.
- The formula for NPer# is found in the BASIC Language Reference manual.
Important
- To use NPer# in the QBX environment, use the FINANCER.QLB Quick library. To use NPer# outside the QBX environment, link your program with the appropriate FINANCxx.LIB file. Depending on the compiler options you chose when you installed BASIC, one or more of the following files will be available:
Filename | Compiler options |
FINANCER.LIB | 80x87 or emulator math; DOS or OS/2 real mode |
FINANCAR.LIB | Alternate math; DOS or OS/2 real mode |
FINANCEP.LIB | 80x87 or emulator math; OS/2 protected mode |
FINANCAP.LIB | Alternate math; OS/2 protected mode |
- The FINANC.BI header file contains the necessary function declarations for NPer#.
- For more information on using libraries, see "Creating and Using Quick Libraries" and "Using LINK and LIB" in the BASIC Programmer's Guide.
Example
This example uses the NPer# function to determine how many periods, or payments, must be made to pay off a loan.
Note: To run this example you must use a Quick library that includes the procedures contained in the financial function library files. The following include files must also be present.
'$INCLUDE: 'FINANC.BI'
CONST ENDPER = 0
CONST BEGINPER = 1
DEFDBL A-Z
DIM APR AS SINGLE
DIM Status AS INTEGER
PresVal = 8000
FutrVal = 0
Payment = 250
APR = .102
'Explain the premise.
CLS
PRINT "You're trying to buy a new car that costs $8000.00. Your budget"
PRINT "only allows you to spend up to $250.00 per month to buy the car"
PRINT "and you don't have a down payment."
PRINT
PRINT "Car loans are normally financed for 12, 24, 36 or 48 months. You'd"
PRINT "like to figure out how long you must finance to stay within your"
PRINT "budget."
PRINT
Periods = NPer#(APR / 12, -Payment, PresVal, FutrVal, BEGINPER, Status)
'Examine Status to determine success of failure of NPer#.
IF Status THEN
'If unsuccessful, announce a problem.
PRINT "There was an error in calculating the number of periods"
PRINT "in your loan."
ELSE
'If successful, display the results.
PRINT "Calculations reveal that at exactly $250.00 per month"
PRINT "you would have to finance for at least"; INT(Periods); "months."
PRINT
PRINT "It appears that you'll have to finance for 48 months unless you"
PRINT "can come up with a $210.00 downpayment."
END IF