[comp.sources.wanted] Rule of 78's

dan@wyse.wyse.com (Dan Weaver x2554) (08/16/89)

  Does anyone have a program that will show amortization schedules
for loans that use the Rule of 78's?  Every time I talk to a finantial
institution about the Rule ot 78's they say something like "It's too
complicated for you to understand."  I may not have a PHD is business
computation but I think I could understand it if someone took the
time to explain it.

Background:
  The Rule of 78's is used to calculate interest payments for loans
that are payed off early.  78 is the sum of the first 12 digits.
The Rule states that in the first month 11/12 of the interest is
payed, the second month 10/12 and so on down to 1/12 for the last
payment.

  I believe the Rule of 78's was designed to make it easier for a
bank to calculate the interest.  Even with the many computers found
today, the Rule of 78's persists because it will charge the customer
more than if the interest was compounded monthly.

Request:
  What I don't know is how this Rule is applied to multi-year loans.

  Any sources that do this sort of thing would be appriciated.  Also
any references on the Rule of 78's would be nice.  One final thing
if this is the wrong news group for posting please give me some
other names.

Thanx,
Dan Weaver
Wyse Technology                 VOICE: (408) 473-2554
3471, N. First Street           ARPA:  dan@wyse.com
San Jose, CA 95134              UUCP:  ...!{uunet}!wyse!dan

bazavan@hpcilzb.HP.COM (Valentin Bazavan) (08/21/89)

Here is an awk script which prints an amortization table by the "Rule of 78."

Valentin Bazavan

-----------------------------Cut here-----------------------------------------
# File name: r78.awk
# Contents:  awk program to print a "Rule of 78" amortization table
# Author: Valentin Bazavan
# Usage:
#		awk -f r78.awk [outfile]
#
# Note: requires the new AT&T awk or MKS awk 
#
# When using the "rule of 78," the total interest (T) to be paid on a loan
# scheduled to be amortized in N payments is artificially divided in
# P = N / 2 * (N + 1) parts. (The number of parts for a 12-installment
# loan is P = 12 / 2 * (12 + 1) = 78--hence the name of the rule.)
# You pay N / P * T interest with the 1st payment, (N - 1) / P * T with
# the 2nd, (N - 2) / P * T with the 3rd, and so on.

BEGIN {
	out = ARGV[1]

	# Get input

	printf "Number of Payments: "
	getline N
	printf "Total Interest: "
	getline TotInt
	printf "Monthly Payment: "
	getline Pmt

	# Coerce to numeric values

	N = N + 0
	TotInt = TotInt + 0.0
	Pmt = Pmt + 0.0
	if (N <= 0 || TotInt <= 0.0 || Pmt <= 0.0) {
		printf "Incorrect input data!\n"
		exit 1
	}

	# Print header

	if (out) {
		printf("\n        Amortization Table - rule of 78s\n\n") > out
		printf("%-9s %-26s %s\n", 
		    "Pmt.#", "Monthly Payment", "To Date") >> out
		printf("%-6s %-23s %s\n\n", 
		    " ", "interest   principal", "interest   principal") >> out
	}
	else {
		printf("\n        Amortization Table - rule of 78s\n\n") 
		printf("%-9s %-26s %s\n", 
		    "Pmt.#", "Monthly Payment", "To Date")
		printf("%-6s %-23s %s\n\n", 
		    " ", "interest   principal", "interest   principal")
	}

	r78part = N / 2 * (N + 1)		# no. of R78 parts in N payments
	onepart =  1.0 / r78part * TotInt	# interest per R78 part
	cumint = 0.0				# cumulated interest
	cumpr = 0.0				# cumulated principal

	# Print table

	for (i = 0; i < N; i++) {
		interest = onepart * (N - i)
		principal = Pmt - interest
		cumpr += principal
		cumint += interest
		if (out)
			printf("%4d %10.2f %11.2f %11.2f %11.2f\n",
			    i + 1, interest, principal, cumint, cumpr) >> out
		else
			printf("%4d %10.2f %11.2f %11.2f %11.2f\n",
			    i + 1, interest, principal, cumint, cumpr)
	}
	if (out) printf "\n" >> out
	else printf "\n"

	exit 0
}