90 IF BD<M THEN M=BD:SWAP BA,BD:SWAP BB,BC:GOTO 85
95 IF BC<M THEN M=BC:SWAP BA,BC:SWAP BB,BD
100 IF BA/BB>BC/BD THEN IF BC>BB THEN SWAP BA,BB:SWAP BC,BD ELSE SWAP BA,BC:SWAP BB,BD
105 PT=0:N=1
110 FOR Z=(BB+1) TO (BA+BB):PT=PT*Z/N:N=N+1:NEXT:N=BB+BD+1
115 FOR Z=(BC+1) TO (BA+BC):PT=PT*Z/N:N=N+1:NEXT:PT=PT*1E+30
120 FOR Z=(BD+1) TO (BC+BD):PT=PT*Z/N:N=N+1:NEXT:P=P+PT
125 IF BA>0 AND PT>0 THEN BA=BA-1:BB=BB+1:BC=BC+1:BD=BD-1:GOTO 105
130 PLAY "MS O3 L64 G O2 GE L9 E"
135 COLOR CLR2,CLR1:LOCATE 19,15:PRINT TAB(33);"p = ";:IF P<9E-09 THEN PRINT "< 10 (-8)"; ELSE PRINT P;
140 PRINT TAB(66):COLOR CLR1,CLR2:LOCATE 25,10
145 INPUT;"Do you want to perform another Fisher's exact test? (Y or N) ",A$
150 IF A$="y" OR A$="Y" THEN CLS:GOTO 20
155 GOTO 3000
160 GOSUB 4800:I=VAL(IP$):IF INT(I)<>I THEN BEEP:LOCATE 25,25:PRINT "Please enter INTEGERS only.";:GOTO 160
165 RETURN
5000 BEEP:IF ERR<>53 AND ERR<>71 THEN 5010 ELSE LOCATE 2,10:PRINT "Please place EPISTAT in drive A: (or other default).":PRINT TAB(25);"Press any key to continue:"