Hi,
I can think of one possiblity...
If you tell the CPU that an FPU is present by clearing the EM flag in CR0, then when the CPU sees an FPU instruction it will give it to the FPU and the CPU will skip the instruction (assuming that the FPU will do it). In this case, for older CPUs (that don't have an FPU) instructions that need an FPU will be skipped by the CPU and won't be executed because there is no FPU.
Your code probably does "fld [width]; fistp [var]" to convert float into int, and if these instructions are ignored then (assuming it's a local variable on the stack) "var" would end up containing whatever happened to be on the stack beforehand.
Basically, AFAIK it's possible that your real computers and MS Virtual PC do have an FPU, and Bochs is configured without FPU support; and your code (or the generic Bochs BIOS or Bochs itself?) clears the MP flag in CR0 regardless of whether or not an FPU is present.
I could be entirely wrong though...
Cheers,
Brendan