home *** CD-ROM | disk | FTP | other *** search
- *****************************************************************
- * * 07/09/92 MORTGAGE.PRG 06:19:39 *
- *****************************************************************
- * * Author's Name: Jeb Long *
- * * *
- * * Description: *
- * * This program computes mortgage payments *
- * * *
- *****************************************************************
-
- PRIVATE m.currarea, m.talkstat, m.compstat
-
- IF SET("TALK") = "ON"
- SET TALK OFF
- m.talkstat = "ON"
- ELSE
- m.talkstat = "OFF"
- ENDIF
- m.compstat = SET("COMPATIBLE")
- SET COMPATIBLE FOXPLUS
- m.currarea = SELECT()
-
-
- *****************************************************************
- * * *
- * * Window Definitions *
- * * *
- *****************************************************************
-
- IF NOT WEXIST("mortgage")
- DEFINE WINDOW mortgage ;
- FROM INT((SROW()-18)/2),INT((SCOL()-63)/2) ;
- TO INT((SROW()-18)/2)+17,INT((SCOL()-63)/2)+62 ;
- TITLE "Mortgage Payment Calculator" ;
- FOOTER "Press Esc to Exit" ;
- NOFLOAT ;
- NOCLOSE ;
- SHADOW ;
- MINIMIZE ;
- SYSTEM ;
- COLOR SCHEME 8 ;
- ICON FILE "MORTGAGE.ICO"
- ENDIF
-
-
- *****************************************************************
- * * *
- * * Setup Mortgage parameters *
- * * *
- *****************************************************************
- *
- STORE 0 TO Price, DownPayment,LoanAmt, pi, taxes,hi,mi,hoi,piti
- STORE 30 TO term && Payment term in years
- Rate = 8.0 && Annual mortgage rate in percent
- TaxRate = .0125 && Tax Rate
- MTR = TaxRate/12 && Monthly Tax rate (impound)
- HIR = .003 && Hazard insurance rate
- MHI = .8*HIR/12 && Monthly hazard insurance impound
- MIR = .0045 && Mortgage insurance rate
- MMI = MIR/12 && Monthly mortgage insurance impound
- IR = Rate/1200. && monthly interest rate
- Tmonth = 12*term && term in months
-
- *****************************************************************
- * * *
- * * MORTGAGE SCREEN LAYOUT *
- * * *
- *****************************************************************
-
- IF WVISIBLE("mortgage")
- ACTIVATE WINDOW mortgage SAME
- ELSE
- ACTIVATE WINDOW mortgage NOSHOW
- ENDIF
- @ 1,1 SAY "Purchase Price"
- @ 2,3 SAY "Down Payment"
- @ 3,4 SAY "Loan Amount"
- @ 4,2 SAY "Interest Rate"
- @ 5,3 SAY "Term (Years)"
- @ 6,8 SAY "Principal and Interest:"
- @ 8,24 SAY "Taxes:"
- @ 9,13 SAY "Hazard Insurance:"
- @ 10,11 SAY "Mortgage Insurance:"
- @ 12,0 SAY "Homeowner and Other Insurance"
- @ 14,25 SAY "PITI"
- @ 4,15 SAY ":"
- @ 5,15 SAY ":"
- @ 3,15 SAY ":"
- @ 2,15 SAY ":"
- @ 1,15 SAY ":"
- @ 10,29 SAY ":"
- @ 11,29 SAY ":"
- @ 4,45 SAY "%"
- DO SHOWCALC && Display Screen
- @ 1,38 GET price ;
- PICTURE "@$ 999,999,999.99" ;
- VALID PRvalid()
- @ 2,38 GET DownPayment ;
- PICTURE "@$ 999,999,999.99" ;
- VALID PRvalid()
- @ 3,38 GET loanamt ;
- PICTURE "@$ 999,999,999.99" ;
- VALID LAvalid()
- @ 4,38 GET rate ;
- PICTURE "99.999";
- VALID PRvalid()
- @ 5,38 GET term ;
- PICTURE "99";
- VALID PRvalid()
- @ 6,38 GET pi ;
- PICTURE "@$ 999,999,999.99" ;
- VALID PIvalid()
- @ 12,44 GET hoi ;
- PICTURE "@$ 9,999.99";
- VALID PRvalid()
-
- IF NOT WVISIBLE("mortgage")
- ACTIVATE WINDOW mortgage
- ENDIF
- READ CYCLE
-
- RELEASE WINDOW mortgage
- SELECT (m.currarea)
-
-
- IF m.talkstat = "ON"
- SET TALK ON
- ENDIF
- IF m.compstat = "ON"
- SET COMPATIBLE ON
- ENDIF
-
- *****************************************************************
- * * *
- * * PRvalid price VALID *
- * * *
- * * Function Origin: *
- * * *
- * * From Screen: MORTGAGE, *
- * * Variable: price *
- * * Called By: VALID Clause *
- * * Object Type: Field *
- * * Snippet Number: 1 *
- * * *
- *****************************************************************
-
- FUNCTION PRvalid && price VALID
- DO RECALC
- CLEAR GETS
- RETURN .T.
- *****************************************************************
- * * *
- * * LAvalid loanamt VALID *
- * * *
- * * Function Origin: *
- * * *
- * * From Screen: MORTGAGE, *
- * * Variable: loanamt *
- * * Called By: VALID Clause *
- * * Object Type: Field *
- * * Snippet Number: 2 *
- * * *
- *****************************************************************
- *
- FUNCTION LAvalid && loanamt VALID
- downpayment = price-loanamt
- DO RECALC
- CLEAR GETS
- RETURN .T.
-
- *****************************************************************
- * * *
- * * LAvalid PI principal and Interest VALID *
- * * *
- * * Function Origin: *
- * * *
- * * From Screen: MORTGAGE, *
- * * Variable: pi *
- * * Called By: VALID Clause *
- * * Object Type: Field *
- * * Snippet Number: 3 *
- * * *
- *****************************************************************
- *
- FUNCTION PIvalid && PI VALID
- LoanAmt = PV(PI, IR, Tmonth)
- Price = LoanAmt + DownPayment
- RETURN LAvalid()
- *****************************************************************
- * * *
- * * RECALC Recomputes payment, etc. *
- * * *
- * * Function Origin: *
- * * *
- * * Called By: PRvalid, LAvalid *
- * * *
- *****************************************************************
- PROCEDURE RECALC
- LoanAmt = Price - DownPayment
- Tmonth = 12*term && term in months
- Taxes = MTR*Price && Monthly Impound for Real Estate Taxes
- HI = MHI*Price && Monthly Impound for Hazard Insurance
- MI = MMI*LoanAmt && Monthly impound for mortgage insurance
- PI = PAYMENT(LoanAmt, IR, Tmonth)
- PITI = PI + HI + MI + HOI + Taxes
- IR = Rate/1200. && monthly interest rate
- DO SHOWCALC
- RETURN
- *****************************************************************
- * * *
- * * SHOWCALC Displays variables *
- * * *
- * * Function Origin: *
- * * *
- * * From Screen: MORTGAGE, *
- * * Called By: MORTGAGE, RECALC *
- * * *
- *****************************************************************
- PROCEDURE SHOWCALC
- @ 14,38 SAY piti ;
- PICTURE "@$ 999,999,999.99"
- @ 8,38 SAY taxes ;
- PICTURE "@$ 999,999,999.99"
- @ 9,38 SAY hi ;
- PICTURE "@$ 999,999,999.99"
- @ 10,38 SAY mi ;
- PICTURE "@$ 999,999,999.99"
- SHOW GETS
- RETURN
-