10 ! L]N.800 - MENYVERSION MED FUNKTIONER 11 ! ETT PROGRAM I DATAL[RA F\RMEDLAT AV *TOJ* 2/81 (L]N.BAS ABC kas 1) 12 ! Reviderat f|r ABC 800-806 80 tecken av B M}rtensson W & M 1984. 14 ! ABC-KASETT 1 SOM L]N.BAS 15 ! ==================================================================== 20 EXTEND : INTEGER 25 ON ERROR GOTO 10 30 ; CHR$(12.) 40 ; " L]N.800 Amortering av l}n (program f|r ber{kning och j{mf|relse)" TAB(80.) "" 50 ; STRING$(80.,61.) 60 ; : ; : ; 70 ; ,"1 Instruktioner" 80 ; ,"2 L}nevillkor" 90 ; ,"3 Amorteringsl}n e skatt" 100 ; ,"4 Annuitetsl}n" 105 ; : ; 110 ; ,"0 Slut" 120 ; CUR(15.,14.) "? "; : GET S$ 130 IF S$="1" Z.=FNInstruktion. : GOTO 30 140 IF S$="2" Z.=FNVillkor. : GOTO 30 142 IF S$="3" Z.=FNAmortering. : GOTO 30 143 IF S$="4" Z.=FNAnnuitet. : GOTO 30 144 IF S$="0" GOTO 145 ELSE GOTO 30 145 ; : ; "BYE" 146 END 200 DEF FNInstruktion. 210 ; CHR$(12.) 220 ; 230 ; ,"N{r man f}r ett l}n best{mmer man" 240 ; 250 ; ,"- l}nets storlek," 260 ; 270 ; ,"- hur m}nga }r som }terbetalningen av" 280 ; ," l}net ska ta," 290 ; 300 ; ,"- r{ntesatsen, dvs hur m}nga procent" 310 ; ," den }rliga avgiften p} skulden skall" 320 ; ," vara," 330 ; 340 ; ,"- p} vilket s{tt l}nets ska }terbetalas." 350 ; 360 ; ,"N{r det g{ller st|rre l}n (f|r en villa" 370 ; ,"eller liknande) finns det i huvudsak" 380 ; ,"tv} typer av l}n:" 390 ; 400 ; ,"(Tryck MELLANSLAG s} presenterar vi dem!)"; 410 GET A$ 420 ; CHR$(12.) 430 ; ,"L]NETYP 1" 440 ; ,"---------" 450 ; 460 ; ,"L}net }terbetalas med LIKA STORA" 470 ; ,"}rliga AMORTERINGAR:" 480 ; 490 ; ," amortering = }terbetalning av en" 500 ; ," del av l}nesumman" 510 ; 520 ; ,"R{ntan betalas p} den skuld man hade" 530 ; ,"kvar }ret f|re en ny amortering." 540 ; ,"Allts} blir" 550 ; 560 ; ,"den }rliga totala utgiften =" 570 ; ,"= r{ntan p} f|rra }rets skuld +" 580 ; ," + amorteringen" 590 ; 600 ; ,"Allteftersom skulden minskar blir" 610 ; ,"r{ntan mindre. D{rf|r minskar den" 620 ; ,"}rliga totalutgiften fr}n }r till }r." 630 ; 640 ; ,"(Tryck MELLANSLAG !)"; 650 GET A$ 660 ; CHR$(12.) 670 ; ,"L]NETYP 2" 680 ; ,"---------" 690 ; 700 ; ,"L}net }terbetalas med hj{lp av en fast" 710 ; ,"ANNUITET, som {r lika stor varje }r:" 720 ; 730 ; ," annuitet = fast }rlig summa som" 740 ; ," innefattar b}de r{nta" 750 ; ," och amortering" 760 ; 770 ; ,"Allteftersom l}net betalas kommer" 780 ; ,"r{ntan att utg|ra en allt mindre del" 790 ; ,"av annuiteten, medan amorteringen blir" 800 ; ,"en allt st|rre del. (Men varje }r {r" 810 ; ,"allts} totalutgiften densamma!)" 820 ; 830 ; ,"- - - - - - - - - - - - - - - -" 840 ; 850 ; 860 ; ,"(Tryck RETURN!)" 870 GET A$ 875 IF A$=CHR$(13.) GOTO 880 ELSE GOTO 860 880 RETURN 0. 890 FNEND 900 DEF FNVillkor. 910 ; CHR$(12.) 920 ; ,"L]NEVILLKOR" 930 ; ,"-----------" 940 ; 980 ; 990 ; 1000 ; 1010 ; ,"l}nets storlek (kr)......... "; 1020 INPUT L. 1030 ; ,"}terbetalningstiden (}r).... "; 1040 INPUT N. 1050 ; ,"r{ntesatsen (%) ............ "; 1060 INPUT P. 1065 ; ,"Ber{knad marginalskatt %.... "; 1066 INPUT Margproc. : Margproc.=Margproc./100. 1070 RETURN 0. 1080 FNEND 1090 DEF FNAmortering. 1110 ; CHR$(12.) 1120 ; 1140 ; 1180 ; ,"L]N MED FASTA AMORTERINGAR" 1190 ; ,"--------------------------" 1200 ; 1210 ; ,"L}n . . . . . . . . . . ";L.;" kr" 1220 ; ,"]terbetalningstid . . . ";N.;" }r" 1230 ; ,"R{ntesats . . . . . . . ";P.;" %" 1240 M.=L./N. 1250 M1.=INT(100.*M.+.49)/100. 1260 ; 1270 ; ,"Amorteringen blir ";M1.;" kr per }r" 1280 FOR I.=1. TO 4000. 1290 NEXT I. 1300 ; 1310 ; ,"Betalningsplanen blir f|ljande" 1320 ; ,"(efter 15 }r, mata fram med MELLANSLAG !):" 1330 ; 1340 ; TAB(10.);"]r";TAB(17.);"R{nta";TAB(27.);"Totalutgift";TAB(40.);"Restskuld" 1350 ; TAB(17.);"kronor";TAB(27.);"kronor";TAB(40.) "kronor" 1360 ; TAB(10.) "---------------------------------------" 1370 REM R = r{ntan 1380 REM T = }rets totalutgift 1390 REM dvs T = r{nta + amortering 1400 REM S = resterande skuldsumma 1410 REM Z = sammanlagd under }ren ut- 1420 REM betald summa 1430 S.=L. 1440 Z.=0. 1450 FOR I.=1. TO N. 1460 R.=P.*S./100. 1462 R.=R.-R.*Margproc. ! Till{gg BM 1470 R1.=INT(100.*R.+.49)/100. 1480 T.=R.+M. 1490 T1.=INT(100.*T.+.49)/100. 1500 S.=L.-I.*L./N. 1510 S1.=INT(100.*S.+.49)/100. 1520 Z.=Z.+T. 1530 REM Vi r{knar antalet heltals- 1540 REM siffror i resultaten, s} att 1550 REM decimalpunkterna kan justeras 1560 REM rakt |ver varandra i tabellen. 1570 I2.=I. 1580 J1.=0. 1590 I2.=I2./10. 1600 IF INT(I2.)=0. THEN GOTO 1630 1610 J1.=J1.+1. 1620 GOTO 1590 1630 R2.=R1. 1640 J2.=0. 1650 R2.=R2./10. 1660 IF INT(R2.)=0. THEN GOTO 1690 1670 J2.=J2.+1. 1680 GOTO 1650 1690 T2.=T1. 1700 J3.=0. 1710 T2.=T2./10. 1720 IF INT(T2.)=0. THEN GOTO 1750 1730 J3.=J3.+1. 1740 GOTO 1710 1750 S2.=S1. 1760 J4.=0. 1770 S2.=S2./10. 1780 IF INT(S2.)=0. THEN GOTO 1810 1790 J4.=J4.+1. 1800 GOTO 1770 1810 ; TAB(10.-J1.);I.;TAB(19.-J2.);R1.;TAB(30.-J3.);T1.;TAB(44.-J4.);S1. 1820 IF I.>14. THEN GET A$ 1830 NEXT I. 1840 ; TAB(10.) "---------------------------------------" 1850 ; 1860 ; ,"Totalt har under de";N.;" }ren" 1870 ; ,"betalts ";INT(100.*Z.+.49)/100.;" KRONOR" 1880 ; 1885 ; ,"dvs." INT(100.*Z./L.+.49)/100. "g}nger l}nesumman." 1890 ; 1900 ; ,"(Tryck RETURN!)", 1910 GET S$ 1911 IF S$=CHR$(13.) GOTO 1920 ELSE GOTO 1900 1920 RETURN 0. 1930 FNEND 1940 DEF FNAnnuitet. 1950 ; CHR$(12.) 1960 ; ,"ANNUITETSL]N" 1970 ; ,"------------" 1980 ; 1990 ; ,"L}n . . . . . . . . . . .";L.;" kr" 2000 ; ,"]terbetalningstid . . . .";N.;" }r" 2010 ; ,"R{ntesats . . . . . . . .";P.;" %" 2020 ; 2030 REM Annuiteten ber{knas 2040 F.=1. 2050 FOR I.=1. TO N. 2060 F.=F.*(1.+P./100.) 2070 NEXT I. 2080 A.=P.*F.*L./100./(F.-1.) 2090 A1.=INT(100.*A.+.49)/100. 2100 ; ,"Annuiteten blir";A1.;" kronor" 2110 ; 2120 FOR I.=1. TO 4000. 2130 NEXT I. 2140 ; ,"S} h{r ser betalningsplanen ut" 2150 ; ,"(efter 15 }r matas }ren fram med MELLANSLAG !):" 2160 ; 2170 ; TAB(10.);"]r";TAB(17.);"R{nta";TAB(27.);"Amortering";TAB(40.);"Restskuld" 2180 ; TAB(17.);"kronor";TAB(27.);"kronor";TAB(40.);"kronor" 2190 ; TAB(10.) "--------------------------------------" 2200 REM R {r r{ntan, M amorteringen 2210 REM och S resterande skuld 2220 X.=1. 2230 Q.=0. 2240 FOR I.=1. TO N. 2250 R.=(1.-(X.-1.)/(F.-1.))*P.*L./100. 2260 R1.=INT(100.*R.+.49)/100. 2270 M.=X.*P.*L./100./(F.-1.) 2280 M1.=INT(100.*M.+.49)/100. 2290 Q.=Q.+M1. 2300 X.=X.*(1.+P./100.) 2310 S.=(1.-(X.-1.)/(F.-1.))*L. 2320 S1.=INT(100.*S.)/100. 2330 REM Nu r{knar vi heltalssiffror i 2340 REM resultaten, s} att vi kan 2350 REM se till, att decimalpunkterna 2360 REM hamnar rakt |ver varandra i 2370 REM tabellutskriften. 2380 I2.=I. 2390 J1.=0. 2400 I2.=I2./10. 2410 IF INT(I2.)=0. THEN GOTO 2440 2420 J1.=J1.+1. 2430 GOTO 2400 2440 R2.=R1. 2450 J2.=0. 2460 R2.=R2./10. 2470 IF INT(R2.)=0. THEN GOTO 2500 2480 J2.=J2.+1. 2490 GOTO 2460 2500 M2.=M1. 2510 J3.=0. 2520 IF INT(M2.)=0. THEN GOTO 2560 2530 M2.=M2./10. 2540 J3.=J3.+1. 2550 GOTO 2520 2560 S2.=S1. 2570 J4.=0. 2580 S2.=S2./10. 2590 IF INT(S2.)=0. THEN GOTO 2620 2600 J4.=J4.+1. 2610 GOTO 2580 2620 ; TAB(10.-J1.);I.;TAB(19.-J2.);R1.;TAB(31.-J3.);M1.;TAB(44.-J4.);S1. 2630 IF I.>14. THEN GET A$ 2640 NEXT I. 2650 ; 2660 ; ,"--------------------------------------" 2670 Q2.=Q. 2680 J5.=0. 2690 IF INT(Q2.)=0. THEN 2730 2700 Q2.=Q2./10. 2710 J5.=J5.+1. 2720 GOTO 2690 2730 ; ,"Summan av " 2740 ; ,"amorteringarna:";TAB(21.-J5.);Q. 2750 ; 2760 ; 2770 ; ,"Totalt har under de";N.;" }ren betalts" 2780 ; 2790 ; ," ";N.;" *";A.;" kr = ";N.*A.;" kr" 2800 ; 2810 Z.=N.*A./L. 2820 Z1.=INT(100.*Z.+.49)/100. 2830 ; ,"dvs ";Z1.;" g}nger l}nesumman." 2840 ; 2850 ; ,"(Tryck RETURN!)", 2855 GET S$ 2856 IF S$=CHR$(13.) GOTO 2860 ELSE GOTO 2850 2860 RETURN 0. 2870 FNEND