Results from the execution units are written into the future file when they complete (may be out-of-order). Upon operand fetching, you fetch from the future file and not the architectural register file. But what happens in this case:
FADD R3, R2, R1 ADD R3, R6, R7 ... SUB R9, R3, R9
the FADD is a floating point add and takes multiple cycles to handle. It finishes later than the ADD so is that result the one that is found in the future register file? The SUB instruction fetches its operands from the future file thus getting the wrong value of R3?