Contents of the AMORT.DOC file
AMORT Version 4.2
Program and documentation copyright 1988, 1989
by John R. Ackermann, Jr.
Welcome to AMORT -- a fast, full-featured loan amortization
If you have Version 4.0 of AMORT, this new version fixes known
bugs and adds the following new features:
1. Output can now be sent to a disk file as well as to the
screen or printer.
2. To allow for future expansion, command line switches must now
be preceded by a slash character ("/").
3. You can now force AMORT to use black and white video
attributes even if your computer looks like it has a color
adapter card. This will be helpful for laptop and AT&T 6300
users. The command line switch for this is "/bw".
4. Printer output can be directed to LPT2 using the command
line switch "/lpt2".
If you are upgrading from AMORT v3.x, you'll find a completely
rewritten program. Your best bet is to read the documentation
below to see what the changes are.
WHAT AMORT DOES
AMORT is a program designed to solve a variety of loan
calculations and amortizations, and to print amortization
schedules to the screen, the printer, or a disk file. It can
find any one unknown -- starting balance, term, interest rate,
or periodic payment amount -- if the other values are provided,
and can solve for either a declining interest or declining
payment loan. It calculates actual payment dates and can deal
with first and/or last payments that are not a full period in
The program will "fill in the blank" with the missing loan
variable, display a yearly summary of the loan balance, and, if
requested, generate a full amortization schedule. The summary
and schedule may be sent to the screen, a printer, or a disk
LET'S MAKE A DEAL
AMORT is NOT in the public domain. I have retained ownership of
the program and am authorizing its use on terms that I think are
fair to both you and me:
1. You may make unlimited use of AMORT in your PERSONAL
affairs. I don't think it's reasonable to force you to pay for
a program that you use just out of curiosity, or to figure out
amortizations of your own loans. Of course, if you want to
register the program anyway to obtain the benefits outlined
below, I won't stop you!
2. BUSINESS users of AMORT must register with me and pay a fee
of $25.00 per copy (contact me about site licenses at
substantially reduced rates). If this program helps you in your
legal, accounting, real estate, banking, etc., business, it is
only fair that you pay a reasonable price for the benefits you
get. Of course, you need a chance to find out if AMORT does what
it says, so you may evaluate AMORT for 21 days before
registering. Unregistered use of the program for business
purposes after that period is a violation of my license to you.
3. All users who register with me will receive the next release
of AMORT on a disk, along with some other programs I've written
(right now, these include an easy-to-use DOS menu program and a
program to warn you when disk space is getting low).
4. I encourage you to distribute AMORT, but only in an archived
package including AMORT.EXE, AMORT.DOC, AMORT.TXT, and
README.NOW. If you distribute AMORT on diskette, you may not
charge more than the reasonable cost of duplication and
distribution. I think that $7.00 is a reasonable maximum charge.
5. The actual license terms are at the end of this document
and at the end of the HELP screens within AMORT. Please read
the license before using the program.
6. Your use of AMORT signifies your acceptance of these terms.
AMORT should work on any 100% IBM PC compatible computer with at
least 128k of RAM, running MS or PC DOS version 2 or later. To
achieve its blazing speed, AMORT uses direct calls to the video
memory in your computer, and thus only "truly compatible"
computers will work. If your machine will run the IBM PC version
of Lotus 1-2-3, it should run AMORT with no trouble. AMORT will
take advantage of a color display if one is present, but will
also work on a monochrome system.
If you have a laptop computer, an AT&T 6300 with monochrome
display, or another computer that shows poor display contrast
when AMORT is running, the command line switch "/bw" will force
AMORT to use monochrome text attributes to increase the
readability of the display.
Some color monitors may show annoying "snow" on the screen as
AMORT displays its data. The command line switch "/s" will
To run AMORT, put the program (AMORT.EXE) in either your current
drive/directory, or in your current directory path, and type
"AMORT [optional command line switches] ".
CUSTOMIZING AMORT WITH COMMAND LINE PARAMETERS
AMORT recognizes several command line parameters or switches
(commands entered after typing "AMORT" at the DOS prompt, but
before pressing the return key). These switches allow you to add
emphasized printing to amortization schedules, adjust AMORT's
page length to compensate for the 60 line pages printed by laser
printers, and adjust the program's video output. Another switch
allows you to change AMORT's method of rounding its calculated
values (more about that later).
You can use either upper or lower case characters for the
switches. Any combination of switches can be used (but, of
course, only one printer switch may be used at a time). Each
switch begins with a "/" character. A space should separate
AMORT recognizes these parameters:
/bw -- force black and white video even if a color adaptor
/c -- enable enhanced printing for C. Itoh printers;
/e -- enable enhanced printing for Epson MX and FX printers;
/l -- enable enhanced printing and adjust page length for HP
LaserJet and DeskJet printers;
/lpt2 -- send printer output to LPT2;
/n -- adjust page length for HP LaserJets and DeskJets, but
don't use enhanced printing;
/s -- compensate for color monitors that generate a "snowy"
display if you run AMORT without this command; and
/r -- force AMORT to round internal calculations to the
nearest penny. There's more about this feature later
in the document.
The "enhanced" printing isn't anything fancy; it's just the
judicious use of bold-face print to highlight data and give a bit
of zip to the schedules.
The /l and /n switches also adjust for the fact that the HP
LaserJet and DeskJet printers automatically provide a 3 line top
and bottom margin. If neither of these switches is specified
when using such a printer, pages may not end the way they should,
especially if you are using header and footer lines (which are
If no command switches are used, AMORT will print schedules on a
66 line page without any enhanced printing, using a color display
if one is present, without compensating for snowy monitors, and
using the default rounding system.
CREATING CUSTOM SCHEDULES WITH HEADERS AND FOOTERS
AMORT can be customized to print a header with your firm name,
etc., at the top of each printout page, and a footer (a liability
disclaimer might not be a bad idea...) at the bottom of the last
page of each schedule.
AMORT looks in the current drive/directory and on your current
path for a text file called AMORT.TXT. If this file exists, its
first two lines will be used as the report header and footer.
AMORT won't complain if it can't find the file, but it won't
print any headers or footers, either.
This file can be located anywhere on your DOS search path, so
there are a lot of possible ways to install the program on your
hard disk. I think the simplest is to install both AMORT.EXE and
AMORT.TXT in a directory on your default path. I have them in my
\DOS directory; since I always have a path pointing there, I can
run AMORT from wherever I might be on the disk.
If the header or footer lines are longer than 80 characters,
only the first 80 will be used; if they are shorter than that,
they will be centered when printed, so don't worry about padding
the lines with spaces. If AMORT.TXT has only one line, that
line will be printed as a header and there won't be any footers.
If there are more than two lines in the file, only the first two
will be used. An easy way to create AMORT.TXT is to go to the
directory where you want to store the file and issue the
following commands at the DOS prompt:
copy con AMORT.TXT
(type the header line and press return)
(type the footer line and press return)
(press the control and Z keys simultaneously, or press F6)
copy con AMORT.TXT
Wonderful Software by John Ackermann
If it doesn't work, don't blame me.
HOW TO ENTER DATA
All function selections in AMORT are based on prompts which
appear at the bottom of the screen. Only the letters specified
(in either upper or lower case) will be accepted; anything else
is ignored. Most menus offer you the option of exiting the
current function by pressing "Q".
AMORT's start-up menu gives you these choices:
(A)mortization -- perform a standard constant payment/declining
(P)rincipal -- perform a constant principal/declining payment
amortization (each payment is a fixed amount of principal plus
(H)elp -- display built-in help (a condensed version of this
(Q)uit to DOS.
The (P)rincipal amortization type is not commonly used; it's
included because some legal settlements may require this type of
schedule. The principal amount here remains the same for each
payment, instead of increasing with each payment as in a standard
amortization. The interest for each payment plus the fixed
principal amount equals the total payment. Thus, the payments in
this type of loan are not constant; they decline as payments are
made. If you choose this amortization, AMORT will ask for the
principal payment amount per period rather than the total payment
After selecting an amortization type, enter the loan data. You
may move through the fields to change data as often as you like;
the cursor movement keys are outlined below. When you are
finished entering or changing data, press the ESCape key. If the
data chosen will not amortize (for example, if the monthly
payment is less than the monthly interest), you will be prompted
to try again.
AMORT can solve for any one loan variable -- beginning balance,
interest rate, loan term, number of payments per year, or
periodic payment amount. To have AMORT calculate a missing
variable, simply leave that field blank when entering the other
These keys control the movement of the cursor in the data entry
Tab/Rtrn/DnArr/PgDn-- Go to the next field
Shft-Tab/UpArr/PgUp-- Go to the previous field
Home/End-- Go to first/last field
Left/Right Arrow-- Move one space in a field
Ctrl-Left/Right Arrow-- Move to beginning/end of field
Delete-- Delete char and close space
Backspace-- Delete char and move cursor left
Insert-- Space under cursor and push right
AMORT works in overtype mode; to insert data, use the Insert key
to "make a hole" in existing text.
In numeric fields, only the characters 0 through 9, "+", "-", and
"." are accepted. Any other characters will be ignored.
Non-significant trailing zeroes (for example, pennies where an
even dollar amount is being entered) need not be included.
The interest rate should be entered in percent, e.g., "12" and
not ".12" for a 12% rate.
Dates should be entered in the format MM/DD/YYYY, although if you
vary from this format by entering "6" instead of "06", or using a
"." or "-" as a separator, AMORT will do its best to figure out
what you want as long as the date is entered in the right order
(month,day,year). More information on date entry is provided
Loan length and size:
AMORT has no fixed limits for loan length or size. We've
successfully tested it with a full amortization of a $99,000,000
loan with weekly payments for 99 years at 12 percent interest.
The combination of a very long loan with many payments per year
and a high interest rate may cause AMORT's internal calculations
to overflow. If this happens, you'll get a message asking you to
edit your data and try again. To cure the problem, either lower
the interest rate, or decrease the total number of payments
(payments-per-year times loan term).
This only occurs with VERY high interest rates, though -- you
won't see it unless you're doing a loan with an interest rate of well
over 100 percent and several thousand payments.
You can specify a 0 percent interest rate (please tell me where
you got THAT loan!) but negative values are not permitted. AMORT
can solve for unknown rates of over 100 percent with an accuracy
of .001 percent.
Payments per year:
To keep things realistic, there are a few restraints on the
number of payments per year that can be specified. If you supply
it, the highest valid number is 365; AMORT would have trouble
dealing with more than one payment per day! Don't fret... AMORT
will properly account for leap years in that case.
If you're solving for an unknown number of payments per year,
there are two constraints. First, the maximum for which AMORT
can solve is 99 payments per year. Second, you can only solve
for payments-per-year if the other values you have provided will
actually amortize with a whole (integer) number of yearly
payments. AMORT can't handle 11.213 payments per year!
Periodic payment amount:
AMORT can solve for the periodic payment amount, and in fact
that's usually the value it is asked to find. You can supply the
payment amount, though. In fact, if you know all the terms of
the loan you can enter them all.
If you provide the payment amount, AMORT will ask if you want it
recalculated for a "perfect" amortization. This adjustment
optimizes the payment to result in a zero balance after the last
payment. If you tell AMORT not to recalculate the payment, you
may find that at the end of the loan there will be a balance left
unpaid or a negative balance, indicating that you've paid too much.
DEALING WITH DATES
AMORT now uses actual loan and payment dates, rather than payment
numbers (as in versions 3.x of the program). You will be
prompted to enter the starting date of the loan (the date when
interest begins to run), the first payment date, and the balloon
Please note that these dates DO NOT determine the loan length
(the amortization period). That is done by specifying or
allowing AMORT to calculate the loan term in years and months.
The balloon date is simply the date of the last payment you want
printed. That payment may be the last one to zero out the loan,
but it can also be an earlier payment, in which case AMORT will
display the final balloon amount to pay off the loan.
Dates should be entered in the format MM/DD/YYYY. The slash,
period, and dash characters are acceptable separators. If you
enter only the last two digits of the year, AMORT will assume you
mean the twentieth century and will add a "19". I strongly
recommend, though, that you get in the habit of using all four
digits -- 2001 is a lot closer than we'd like to admit!
If any or all of the date fields are left blank, AMORT will do
its best to fill them in for you:
1. If the starting date (the date interest starts to run) is
left blank, AMORT will supply the date from your computer's
2. If the first payment date is blank, it will be one full
period (e.g., one month if monthly payments have been selected)
after the starting date.
3. If the balloon date (the date of the last payment, whether
the full loan term or not) is blank, it will be set to the last
payment date for a full-term amortization.
In most cases, the starting date is the only one you need to
enter, as AMORT will then calculate the first payment date and
the balloon date. If you're doing a full-term analysis, you
don't have to fill in the balloon date; AMORT will set it based
on the full loan term.
If you don't care about the dates, just leave them all blank and
AMORT will set up a schedule which assumes the loan begins on the
current date of your computer's clock/calendar.
If 12 or 24 payments per year are specified, AMORT will keep the
loan payments falling on the same day(s) of the month throughout
the term of the loan. If a payment falls on an invalid date like
February 31, the date will be adjusted to reflect a valid one.
In the case of 24 payments per year, if the first payment falls
on either the first or the last day of the month, the second (and
following even numbered payments) will be on the 15th. If the
first payment is on the 15th, the second payment will be on the
first of the following month. If the first payment falls on
another day of the month, the second will be 15 days later.
If 26 or 52 payments per year are chosen, AMORT will treat the
loan as a true weekly or biweekly one. This means payments will
fall every 14 or 7 days, without regard to crossing over months
or years. Some years may end up with 27 or 53 payments because of
this. Additionally, AMORT will attempt to make the balloon date
match the loan length by adding additional payments to compensate
for leap years and other vagaries of our calendar.
This means that in a long loan, the number of payments will be
greater than, for example, simply multiplying 30 years times 52
payments per year. It also means that the balloon payment date
may not be what you might expect, because the loan term may not
be precisely divisible by the number of days between payments.
MATH CONVENTIONS -- TO ROUND, OR NOT TO ROUND
All computer programs have to deal somehow with the rounding of
fractional amounts. In AMORT, for example, the periodic interest
rate and the principal balance are stored internally with up to
12 decimal places. When these are multiplied together to
determine the interest paid for the period, it's obvious that the
result may not be an exact number of dollars and cents.
AMORT's default way of handling this is to do all its
calculations with full precision, but to round all displayed
values to the nearest penny. That means that adding up the
individual interest amounts for a year's payments may not equal
the annual interest displayed by AMORT -- there may be a penny or
two difference. That's because AMORT's total is based on the sum
of the unrounded interest amounts, and not the rounded ones that
are displayed in the schedule.
I think this is the best way to handle rounding -- it maximizes
the accuracy of ALL the numbers displayed because they are
rounded only once, not several times as they would be if the sum
of the interest for a year is equal to the sum of each of the
already rounded displayed amounts. This method also ensures that
the balance at the end of the loan amortization will actually be
zero (or very close to it).
Not everyone agrees with me, though. Some folks have raised the
valid point that someone checking a schedule's accuracy (and who
really trusts a computer, anyway?) will be disturbed by what they
see as an "error" when they add up all the columns.
I believe in free choice, so using the "/r" switch when AMORT is
run (with the command "AMORT /r") will force the values used for
internal calculations to be rounded to the nearest penny. This
should prevent any problems with the schedules being apparently
This rounding does, however, exact a price. The calculations of
cumulative interest and remaining balance may be off by a small
amount that increases with the length of the amortization. These
cumulative errors will ultimately reveal themselves at the end of
the amortization, when the final payment necessary to retire the
loan will be different than the normal periodic payment amount.
Using the rounding switch also reduces the range of loans that
AMORT can handle, because it is possible in a long loan at high
interest to have initial principal reductions of less than 1/2
cent per payment. If those reductions are rounded down to zero,
the loan balance will never decrease and the amortization won't
work. A loan like this will amortized properly when rounding is
turned off, because the loan balance will be reduced by
fractional pennies even if the schedule displays the principal
reduction as $0.00 -- sooner or later, the fractions will add up
to whole cents.
In short, I recommend that you NOT force internal rounding. I
think it is better to put up with the apparent inconsistencies
caused by rounding than to sacrifice accuracy.
Finally, like most banks, AMORT calculates interest based on a
360-day year with twelve 30-day months. This means that the
number of "interest days" is the same each month, even though the
number of calendar days may vary.
AMORT does calculate interest based on the actual number of days
of the first and last periods, if you have manually set those
periods shorter or longer than the standard. In that case, the
interest is still based on a 360 day year; if the first payment
period is 15 days long, the interest charged will be based on
15/360ths of the annual rate.
When you've finished entering data and press the ESCape key,
AMORT fills in the blank for the missing value. If there are any
problems, you will see a (hopefully) descriptive error message
and be given a chance to change the entered values. Once all is
in order with the loan, you'll be shown a menu line with these
(S)ummary -- display or print the yearly summary only. The
summary contains the principal reduction, interest paid,
cumulative interest paid, and balance remaining at the end of
each calendar year of the loan;
(F)ull -- display or print the full amortization schedule, with
one line for each payment. This schedule also shows year-end
(B)oth -- display or print both schedules;
(E)dit again -- edit this data to change values, or start a new
(Q)uit to DOS.
If you choose to edit again, you will be given the choice of
editing (O)ld values (the current data) or (N)ew ones. If you
choose to edit new values, you will be returned to the original
menu you saw when you started AMORT.
If you choose to view the schedules, you will be prompted to
select output to the (S)creen, the (P)rinter, or a (D)isk file.
If you select output to the printer, AMORT will prompt you to
press P again when the printer is ready. If there is a printer
problem, AMORT will try to let you know and give you an
opportunity to put things right.
As noted above, AMORT can generate pretty printouts if you
include a command line switch specifying one of the supported
printers (currently, Epson, HP Laser and Desk Jet, and C. Itoh).
The printer output is normally sent to LPT1 unless you've
selected LPT2 with the command line switch /lpt2.
Output to the screen or printer can be cancelled at any time by
A new feature in Version 4.2 is the ability to send schedules to
a disk file. This is useful if you want to save a schedule for
printing at a later time, or if you want to import the schedule
into another program such as a word processor or spreadsheet.
The disk file will contain ASCII text and, if 1) a printer was
selected with a command line switch as described above, and 2)
you tell AMORT in response to its prompt that you want it to, the
file will also contain printer control codes for enhanced
printing. If you plan to import the file into another program,
you should answer the control code prompt with N.
If you select output to a disk file, you'll be prompted to enter
the file name. The name can include a drive letter and path, so
an entry of "C:\AMORT\SMITH.ASC" would be valid. AMORT checks
the name you've entered, and if it is unable to open the file
prompts you to (T)ry again or (Q)uit. If the file name you've
specified already exists, AMORT asks for permission to overwrite
the existing file.
When you are finished with the amortization, you will have the
choice of (E)diting again or (Q)uitting to DOS. As before, if
you choose to edit again you will have the option of working with
your current data, or starting from scratch.
Remember, AMORT is NOT in the public domain. You are licensed to
use this program for your own use, and at your own risk.
You may make private use of this program without registering, but
if you use it for commercial purposes (i.e., as part of or in
furtherance of your business) you MUST register with me and pay a
fee of $25.00 for each copy of the program so used.
Although not required to do so, private users are encouraged to
register as well. Besides supporting the shareware concept, such
registration entitles you to the next upgrade of the program.
You are free to, and in fact are encouraged to, distribute AMORT
either on disk or electronically, but AMORT.EXE, AMORT.DOC,
AMORT.TXT, and README.NOW must all be distributed together and no
more than the reasonable cost of duplication and distribution may
be charged. $7.00 is considered to be a reasonable charge.
Additionally, if you describe or promote AMORT in any publication
or advertisement for software distribution, the copy must clearly
indicate that AMORT is not in the public domain, and that a fee
is charged for certain types of use.
AMORT is distributed on an AS-IS basis, and UNDER NO
CIRCUMSTANCES WILL John R. Ackermann, Jr. BE LIABLE FOR ANY
DAMAGES WHATSOEVER, WHETHER DIRECT, CONSEQUENTIAL OR INCIDENTAL,
ARISING OUT OF YOUR USE OF THIS PROGRAM. ALL WARRANTIES,
INCLUDING ANY WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
INTENDED USE, ARE EXPRESSLY DISCLAIMED.
Please direct registrations, comments and suggestions to:
John R. Ackermann, Jr.
2790 Swigert Road
Dayton, OH 45440
Thanks for your support!