When I opened the compiled EXE on the hard drive with a hex editor and looked at the part of the code that is the result of this code being compiled:
! nop
mePlan.native(i) = mePlan.native(i) - v
! nop
I see this hex dump.
 
 *** These values are from my hard drive and not the program in memory *** 
00031370:   908B4580 8B8D7CFF FFFF83E9 01C1E102
00031380:   F7D80381 A01A3A81 8B8D7CFF FFFF83E9
00031390:   01C1E102 8981A01A 4C0090
Using the intel manual from http://www.intel.com I looked up what it all means.
  HEX in the EXE             Meaning
90                    nop
8B 45 80              mov   eax,dword ptr [ebp-80]
8B 8D 7C FF FF FF     mov   ecx,dword ptr [ebp-00000084]
83 E9 01              sub   ecx,00000001
C1 E1 02              shl   ecx,02
F7 D8                 neg   eax
03 81 A0 1A ?? ??     add   eax,dword ptr [ecx-????????]
8B 8D 7C FF FF FF     mov   ecx,dword ptr [ebp-00000084]
83 E9 01              sub   ecx,00000001
C1 E1 02              shl   ecx,02
89 81 A0 1A 4C 00     mov   dword ptr [ecx+004c1aa0],eax
90                    nop


The two hex values marked as ?? are the problem.
After every compile, using the same source code these values are RANDOM.
Every other byte in the program is exactly the same as the last compile,
but these two are random. These random values crash my program with a GPF
error every time. The correct values for those two random values is: 4C 00.
If I use a HEX editor to edit the EXE (on the hard drive) and change the
values of the two random HEX numbers to 4C and 00 the GPF error disappears.
To verify the error, all the guys at Power Basic have to do is compile the
source code several times and do a file compare of the resulting EXE files. 

00031370:   908B4580 8B8D7CFF FFFF83E9 01C1E102
00031380:   F7D80381 A01A???? 8B8D7CFF FFFF83E9
00031390:   01C1E102 8981A01A 4C0090
They will see that the values at 00031386 and 00031387 in the EXE file on the hard drive is randomly changing with each new compile.

Tim Wisseman

cocomax@sierratel.com