The only time this would make a difference is if the bfd is open for "update". Is it possible that only a portion of the bfd has been read in (the part being updated)? I wonder what would happen if it tried to write out the bfd when it only had a portion in memory? Just thinking out loud...