APPENDIX

WIDGETS in S-Basic (TM)

S-Basic (TM) is a compiler that was included as part of the bundled software with Kaypro CPM computers. Since the world has moved on, this could use an update to a currently more viable language. Any help along that line would be appreciated.

The program itself, I hope, contains sufficient comments to be easily understood. There are, however, several items that should be noted concerning some simplifying assumptions.

First is the use of a fixed 15% economic-interest/normal-profit. This is an obvious over-simplification of a very complex issue. In the real world of uncertainty, normal profit is an outcome affected by many concerns such as the money interest rate, market risks of any particular enterprise, depletion and depreciation risks, etc. For the purpose of this simulation though, this simplification does no significant harm to the effectiveness of the model. [The efffect is overcome by the bias inserted as a consequence of Don Dale's criticism that the tax / fee does not cause economic growth. That is, if all the complex items that determine the price of common stock could be adequately modeled there would be no need to insert the bias as the monopoly tax would, in fact, cause economic growth.]

A second assumption, the simplification of using a fixed value for each level of productive capacity does, however, make the monopoly tax behave much as the "non-distortionary" form of tax that has been a part of the criticisms of several economists such as that by Don Dale of Princeton. The distinction between the monopoly tax and non-distortionary taxes such as a corporate income tax is that the basis for the non-distortionary tax does not encourage investment but it also does not discourage economic activity as do the distortionary taxes that are proportional to economic activities. The monopoly tax, by increasing the cost of keeping productive assets idle, does encourage economic activity.

Distortionary taxes are those which discourage economic activity by creating a higher price to buyers than is recieved by sellers. These are taxes such as personnal income and other payroll taxes that increase the cost of labor over the wages labor recieves and sales taxes that create a higher price to buyers than is realized by sellers. Value added taxes behave in essentially the same distortionary manner as sales taxes, etc.

The monopoly tax, although this model does not reflect this characteristic, is based on the market valuation of the corporation rather than the profit and does encourage investment by increasing the cost of holding productive assets idle. However, the complexity of establishing a simulation of the market forces of expectations and other relevant issues that determine the market value of a corporation prevents a simple modeling of this difference. Suffice it to say that, while there is good reason to prefer the monopoly tax over a non-distortionary tax, this model accomplishes a similar effect by a reduction in the distortionary taxes presently imposed and by reducing the nominal unit cost of labor while at the same time providing a Citizen's Dividend to maintain or increase labor's standard of living.

In any event, here is the program:

Widgets in S-Basic

 

0001:00 VAR 	I,J,O,POUT,MAXI,PMAXI,IPODR = INTEGER

0002:00 VAR ANS = STRING
0003:00 VAR P,L,T,N,M,PIT,CIT,DES,NPF,PC,LC,LCF,MT = REAL
0004:00 VAR PODR,NUMWIDG,MINNUM,MAXNUM,IP,IPI,PF,NP = REAL
0005:00 DIM COM REAL C(6,401) S(6,401)
0006:00 FILES R(24)
0007:00
0008:00 COMMENT VARIABLE IDENTIFICATION
0009:01
0010:02 ANS = ANSwer for output questions
0011:02 CIT = Corporate Income Tax rate
0012:02
0013:03 cost per widget Components matrix:
0014:03 C(0,I) = Labor Cost
0015:03 C(1,I) = Personnal Income Tax
0016:03 C(2,I) = Corporate Income Tax
0017:03 C(3,I) = Monopoly Tax
0018:03 C(4,I) = Economic Interest or Normal Profit
0019:03 C(5,I) = Economic (Monopoly) Profit = S(5,I) - S(4,I)
0020:03
0021:04 DES = DisEconomy of Scale factor
0022:04
0023:05 dummy variables for output at MAXNUM (maximum profit):
0024:05 P = Price
0025:05 L = Labor income
0026:05 T = Taxes
0027:05 N = Normal profit
0028:05 M = Monopoly profit
0029:05
0030:06 I = Iteration Index
0031:06 IP = Initial Price at MINNUM
0032:06 IPI = Initial Price at Point Of Dimminishing Returns
0033:06 IPODR = Index FOR Point Of Diminishing Returns
0034:06 J = Iteration index
0035:06 LC = Labor Cost per widget
0036:06 LCF = Factor for step 9 reduction in LC
0037:06 MAXI = MAXimum profit Index
0038:06 MAXNUM = MAXimum profit NUMber of widgets
0039:06 NPF = Normal Profit For 250 widget capacity
0040:06 MINNUM = MINimum NUMber of widgets to be calculated
0041:06 MT = Monoply Tax
0042:06 NP = Normal Profit (or economic interest; or opportunity cost)
0043:06 NUMWIDG = NUMber of WIDGets
0044:06 O = Printer output control
0045:06 POUT = PrintOUTput control index
0046:06 PMAXI = Prior MAXI
0047:06 PC = Price Change per 250 widget demand change
0048:06 PF = Price Factor to compute price at MINNUM
0049:06 PIT = Personnal Income Tax rate
0050:06 PODR = number of widgets produced at PODR
0051:06
0052:07 Cost per widget summation matrix:
0053:07 S(0,I) = C(0,I)
0054:07 S(1,I) = S(0,I) + C(1,I)
0055:07 S(2,I) = S(1,I) + C(2,I)
0056:07 S(3,I) = S(2,I) + C(3,I)
0057:07 S(4,I) = S(3,I) + C(4,I) = Total cost per widget
0058:07 S(5,I) = Selling Price
0059:07
0060:08 END
0061:07
0062:07 0 REM INITIALIZE
0063:07
0064:07 INPUT " OUTPUT TO PRINTER Y/N" ;ANS
0065:07 IF ANS = " Y" THEN O = 1 ELSE O = 0
0066:07 PIT = .25
0067:07 CIT = .5
0068:07 DES = 5
0069:07 NPF = 1500
0070:07 LC = 6000 - DES
0071:07 LCF = .9
0072:07 MT = 0
0073:07 MINNUM = 90000
0074:07 IPODR = 40
0075:07 MAXI = IPODR
0076:07 IPI = 10000.009
0077:07 IP = 10101
0078:07 PC = .99975
0079:07 S(5,MAXI) = IPI
0080:07 POUT = 0
0081:07
0082:07 REM INITIALIZE MATRICIES
0083:07
0084:07 GOSUB 1000
0085:07
0086:07 REM PRINT HEADER
0087:07
0088:07 GOSUB 10000
0089:07
0090:07 REM FIND MAXIMUM PROFIT WITH PRESENT TAX SYSTEM
0091:07
0092:07 GOSUB 2000
0093:07
0094:07 REM PRINT RESULTS
0095:07
0096:07 POUT = 0
0097:07 GOSUB 3000
0098:07
0099:07 REM IMPOSE MONOPOLY TAX EQUAL TO TAX FROM PIT AND CIT
0100:07 REM AND FIND NEW POINT OF MAXIMUM PROFIT
0101:07
0102:07
0103:07 MT = (C(1,MAXI) + C(2,MAXI))*MAXNUM
0104:07 PIT = 0
0105:07 CIT = 0
0106:07
0107:07 REM UPDATE MATRICIES
0108:07
0109:07 GOSUB 1100
0110:07
0111:07 REM FIND MAXIMUM PROFIT
0112:07
0113:07 GOSUB 2000
0114:07
0115:07 REM PRINT RESULTS
0116:07
0117:07 POUT = 1
0118:07 GOSUB 3000
0119:07
0120:07 REM ADJUST MONOPOLY TAX TO INCLUDE MONOPOLY PROFIT
0121:07
0122:07 GOSUB 4000
0123:07
0124:07 REM PRINT RESULTS
0125:07
0126:07 POUT = 2
0127:07 GOSUB 3000
0128:07
0129:07 REM INVEST IN LARGER FACTORY AND FIND MAXIMUM PROFIT
0130:07
0131:07 IPODR = MAXI
0132:07
0133:07 REM UPDATE MATRICIES
0134:07
0135:07 GOSUB 1100
0136:07
0137:07 REM FIND MAXIMUM PROFIT FOR FIRST ITERATION
0138:07
0139:07 GOSUB 2000
0140:07
0141:07 REM PRINT RESULTS
0142:07
0143:07 POUT = 3
0144:07 GOSUB 3000
0145:07
0146:07 10 REM FIND MAXIMUM PROFIT FOR LAST ITERATION
0147:07
0148:07 IPODR = MAXI
0149:07 GOSUB 1100
0150:07 GOSUB 2000
0151:07 IF MAXI > IPODR THEN 10
0152:07
0153:07 REM PRINT RESULTS
0154:07
0155:07 GOSUB 10500
0156:07
0157:07 REM ADJUST MONOPOLY TAX TO INCLUDE MONOPOLY PROFIT
0158:07
0159:07 GOSUB 4000
0160:07
0161:07 REM PRINT RESULTS
0162:07
0163:07 POUT = 2
0164:07 GOSUB 3000
0165:07
0166:07 REM DISTRIBUTE CITIZEN DIVIDEND
0167:07
0168:07 PMAXI = 0
0169:07
0170:07 REM UPDATE MATRICIES
0171:07
0172:07 15 GOSUB 1000
0173:07
0174:07 REM FIND MAXIMUM PROFIT
0175:07
0176:07 GOSUB 2000
0177:07 IF MAXI > PMAXI THEN BEGIN
0178:08 PMAXI = MAXI
0179:08 GOTO 15
0180:08 END
0181:07 IF PMAXI > MAXI THEN MAXI = PMAXI
0182:07 MAXNUM = MINNUM + MAXI*250
0183:07 GOSUB 1000
0184:07 GOSUB 2000
0185:07
0186:07 REM PRINT RESULTS
0187:07
0188:07 POUT = 4
0189:07 GOSUB 3000
0190:07
0191:07 REM ADJUST MONOPOLY TAX TO INCLUDE MONOPOLY PROFIT
0192:07
0193:07 GOSUB 4000
0194:07
0195:07 REM PRINT RESULTS
0196:07
0197:07 POUT = 2
0198:07 GOSUB 3000
0199:07
0200:07 REM CITIZEN'S DIVIDEND WITH FOLLOWUP INVESTMENT
0201:07
0202:07 IF MAXI > IPODR THEN BEGIN
0203:08 20 IPODR = MAXI
0204:08 GOSUB 1100
0205:08 GOSUB 2000
0206:08 IF MAXI > IPODR THEN 20
0207:08 END
0208:07
0209:07 PMAXI = 0
0210:07 30 GOSUB 1000
0211:07 GOSUB 2000
0212:07 IF MAXI > PMAXI THEN BEGIN
0213:08 PMAXI = MAXI
0214:08 GOTO 30
0215:08 END
0216:07 IF PMAXI > MAXI THEN MAXI = PMAXI
0217:07 MAXNUM = MINNUM + MAXI*250
0218:07 GOSUB 1000
0219:07 IF MAXI > IPODR THEN 20
0220:07
0221:07 REM ADJUST MONOPOLY TAX TO INCLUDE MONOPOLY PROFIT
0222:07
0223:07 GOSUB 4000
0224:07
0225:07 REM PRINT RESULTS
0226:07
0227:07 POUT = 5
0228:07 GOSUB 3000
0229:07
0230:07 REM PRINT END OF PAGE
0231:07
0232:07 GOSUB 10470
0233:07
0234:07 REM PRINT HEADER
0235:07
0236:07 GOSUB 10000
0237:07
0238:07 REM DECREASE UNIT LABOR COSTS
0239:07
0240:07 LC = LCF*LC
0241:07 DES = LCF*DES
0242:07
0243:07 REM FIND MAXIMUM PROFIT
0244:07
0245:07 40 IPODR = MAXI
0246:07 GOSUB 1100
0247:07 GOSUB 2000
0248:07 IF MAXI > IPODR THEN 40
0249:07 PMAXI = 0
0250:07 45 GOSUB 1000
0251:07 GOSUB 2000
0252:07 IF MAXI > PMAXI THEN BEGIN
0253:08 PMAXI = MAXI
0254:08 GOTO 45
0255:08 END
0256:07 IF PMAXI > MAXI THEN MAXI = PMAXI
0257:07 MAXNUM = MINNUM + MAXI*250
0258:07 GOSUB 1000
0259:07
0260:07 REM ADJUST MONOPOLY TAX TO INCLUDE MONOPOLY PROFIT
0261:07
0262:07 GOSUB 4000
0263:07
0264:07 IF MAXI > IPODR THEN 40
0265:07
0266:07 REM PRINT RESULTS
0267:07
0268:07 POUT = 6
0269:07 GOSUB 3000
0270:07
0271:07 REM PRINT END OF PAGE
0272:07
0273:07 GOSUB 10470
0274:07
0275:07 REM START OVER
0276:07
0277:07 GOTO 0
0278:07
0279:07 REM
0280:07 REM SUBROUTINES
0281:07 REM
0282:07
0283:07 REM
0284:07 1000 REM INITIALIZE SELLING PRICE FOR MATRIX
0285:07 REM AND ADJUST FOR CITIZEN'S DIVIDEND
0286:07 REM (COMPUTE DEMAND SCHEDULE)
0287:07 REM
0288:07
0289:07 PF = IPI/S(5,MAXI)
0290:07 IP = IP*PF
0291:07 S(5,0) = IP
0292:07 FOR I = 1 TO 400
0293:08 S(5,I) = S(5,I-1)*PC
0294:08 NEXT I
0295:07
0296:07 REM FIX ROUNDING OF PRICE ERRORS
0297:07
0298:07 IF S(5,MAXI) < (IPI - .009) OR S(5,MAXI) > (IPI) THEN 1000
0299:07 GOSUB 1100
0300:07
0301:07 RETURN
0302:07
0303:07 1100 REM UPDATE MATRICIES
0304:07
0305:07 NUMWIDG = MINNUM
0306:07 PODR = IPODR*250 + MINNUM
0307:07 NP = PODR*NPF
0308:07 FOR I = 0 TO 400
0309:08 IF I > IPODR THEN BEGIN
0310:09 L = (100 + I - IPODR)/100
0311:09 C(0,I) = C(0,I-1) + DES*L*L
0312:09 GOTO 1110
0313:09 END
0314:08 L = (100 + IPODR - I)/100
0315:08 C(0,I) = LC + DES*L*L*L*L
0316:08 1110 NUMWIDG = NUMWIDG + 250
0317:08 NEXT I
0318:07 NUMWIDG = MINNUM
0319:07 FOR I = 0 TO 400
0320:08 C(1,I) = PIT*C(0,I)
0321:08 C(3,I) = MT/NUMWIDG
0322:08 C(4,I) = NP/NUMWIDG
0323:08 M = S(5,I) - (C(0,I) + C(1,I) + C(3,I) + C(4,I))
0324:08 C(2,I) = CIT*M
0325:08 IF C(2,I) < 0 THEN C(2,I) = 0
0326:08 C(5,I) = M - C(2,I)
0327:08 S(0,I) = C(0,I)
0328:08 FOR J = 1 TO 4
0329:09 S(J,I) = S(J-1,I) +C(J,I)
0330:09 NEXT J
0331:08 NUMWIDG = NUMWIDG + 250
0332:08 NEXT I
0333:07 RETURN
0334:07
0335:07 REM
0336:07 2000 REM FIND MAXIMUM PROFIT
0337:07 REM
0338:07
0339:07 MAXNUM = MINNUM
0340:07 MAXI = 0
0341:07 NUMWIDG = MINNUM
0342:07 FOR I = 0 TO 400
0343:08 IF (NUMWIDG*C(5,I)) > (MAXNUM*C(5,MAXI)) THEN BEGIN
0344:09 MAXI = I
0345:09 MAXNUM = NUMWIDG
0346:09 END
0347:08 NUMWIDG = NUMWIDG + 250
0348:08 NEXT I
0349:07
0350:07 REM
0351:07 2100 REM COMPUTE OUTPUT DATA
0352:07 REM
0353:07
0354:07 P = S(5,MAXI)
0355:07 L = (C(0,MAXI)*MAXNUM) / 1000
0356:07 T = ((C(1,MAXI) + C(2,MAXI) + C(3,MAXI))*MAXNUM) / 1000
0357:07 N = NP / 1000
0358:07 M = (C(5,MAXI)*MAXNUM) / 1000
0359:07 IF ABS(M) < 1 THEN M = 0
0360:07 RETURN
0361:07
0362:07 3000 REM PRINT RESULTS
0363:07
0364:07 GOSUB 10300
0365:07 CASE POUT OF:
0366:07 0:GOSUB 10400
0367:07 1:GOSUB 10410
0368:07 2:GOSUB 10420
0369:07 3:GOSUB 10430
0370:07 4:GOSUB 10440
0371:07 5:GOSUB 10450
0372:07 6:GOSUB 10460
0373:07 END
0374:07 GOSUB 10300
0375:07 GOSUB 10500
0376:07 RETURN
0377:07
0378:07 4000 REM ADJUST MONOPOLY TAX TO INCLUDE MONOPOLY PROFIT
0379:07
0380:07 MT = MT + C(5,MAXI)*MAXNUM
0381:07
0382:07 REM UPDATE MATRICIES
0383:07
0384:07 GOSUB 1100
0385:07
0386:07 REM FIND MAXIMUM PROFIT
0387:07
0388:07 GOSUB 2000
0389:07 RETURN
0390:07
0391:07 10000 REM PRINT HEADER
0392:07
0393:07 GOSUB 10100
0394:07 GOSUB 10100
0395:07 GOSUB 10200
0396:07 PRINT #O; " ********************** FREEDOM WIDGET COM" +\
0397:07 " PANY ***********************"
0398:07 GOSUB 10200
0399:07 GOSUB 10100
0400:07 GOSUB 10100
0401:07 PRINT #O; " _____________________________________________" +\
0402:07 " _____________________________"
0403:07 PRINT #O; " | PRODUCTION LEVEL || UNIT || " +\
0404:07 " REVENUE DISTRIBUTION |"
0405:07 PRINT #O; " |_NUMBER_OF_WIDGETS__|| SELLING ||_________" +\
0406:07 " ____1,000'S OF $'S____________|"
0407:07 PRINT #O; " | DESIGN | MAXIMUM || PRICE || LABOR " +\
0408:07 " | GOV'T |______PROFIT_______|"
0409:07 PRINT #O; " |_CAPACITY_|_PROFIT__||__DOLLARS__||_INCOME__" +\
0410:07 " |__TAXES__|_NORMAL__|__MONOP__|"
0411:07 GOSUB 10300
0412:07 PRINT #O; " | COMPANY PERFORMANCE WITH: || " +\
0413:07 " | | | |"
0414:07 RETURN
0415:07
0416:07 10100 REM PRINT HEADER LINE ONE
0417:07
0418:07 PRINT #O; " *********************************************" +\
0419:07 " ******************************"
0420:07 RETURN
0421:07
0422:07 10200 REM PRINT HEADER LINE TWO
0423:07
0424:07 PRINT #O; " ********************** " +\
0425:07 " ***********************"
0426:07 RETURN
0427:07
0428:07 10300 REM PRINT SPACER LINE
0429:07
0430:07 PRINT #O; " | | || || " +\
0431:07 " | | | |"
0432:07 RETURN
0433:07
0434:07 10400 REM PRESENT TAX SYSTEM
0435:07
0436:07 PRINT #O;" | 1 - PRESENT INCOME TAXES || " +\
0437:07 " | | | |"
0438:07 RETURN
0439:07
0440:07 10410 REM MONOPOLY TAX EQUAL TO PRESENT TAXES
0441:07
0442:07 PRINT #O;" | 2 - MONOPOLY TAX EQUAL TO INCOME TAXES" +\
0443:07 " | | | |"
0444:07 RETURN
0445:07
0446:07 10420 REM ADJUSTED MONOPOLY TAX
0447:07
0448:07 PRINT #O;" | ADJUSTED MONOPOLY TAX || " +\
0449:07 " | | | |"
0450:07 RETURN
0451:07
0452:07 10430 REM INVESTMENT ENLARGING FACTORY
0453:07
0454:07 PRINT #O;" | 3 - INVESTMENT ENLARGING FACTORY " +\
0455:07 " | | | |"
0456:07 RETURN
0457:07
0458:07 10440 REM CITIZENS DIVIDEND
0459:07
0460:07 PRINT #O;" | 4 - CITIZEN'S DIVIDEND || " +\
0461:07 " | | | |"
0462:07 RETURN
0463:07
0464:07 10450 REM CITIZEN'S DIVIDEND PLUS INVESTMENT
0465:07
0466:07 PRINT #O;" | 5 - CITIZEN'S DIVIDEND PLUS INVESTMENT" +\
0467:07 " | | |"
0468:07 RETURN
0469:07
0470:07 10460 REM REDUCED UNIT LABOR COST
0471:07
0472:07 PRINT #O;" | 6 - REDUCED UNIT LABOR COST | " +\
0473:07 " | | | |"
0474:07 RETURN
0475:07
0476:07 10470 REM PRINT BOTTOM LINE
0477:07
0478:07 PRINT #O; " |__________|_________||___________||_________" +\
0479:07 " |_________|_________|_________|"
0480:07 GOSUB 10100
0481:07 GOSUB 10100
0482:07
0483:07 REM PRINT FORM FEED (CANNON BJ-130)
0484:07
0485:07 PRINT #O; CHR(12)
0486:07 RETURN
0487:07
0488:07 10500 REM PRINT RESULTS
0489:07 REM
0490:07
0491:07 PRINT USING " | ###,### | ###,### || ##,###.## || ###,### |" +\
0492:07 " ###,### | ###,### | ###,### |" ;#O;PODR;MAXNUM;P;L;T;N;M
0493:07 RETURN
0494:07
0495:07 END
0496:07
0497:07 ****** End of program ******

Comments or discussion of any of these articles or related material is invited.
[email protected]



Return to Contents Page
Return to Home Page
1
Hosted by www.Geocities.ws