Its much better now, but empty block still causes MBD inconsistency. Try the attached TAP, then check resulted MBD with mbdcheck. I suggest throwing those empty blocks away. They are useles anyway.
We analyzed it a bit with Busy, and here are findings: 1. wrong handling of 0 bytes sized (empty) blocks when present in TAP file, produces wrong dir entry. 2. if "fake" header exists before headerless block, the size for the headerless block is set from that "fake" header, not from its real size. If block size in that "fake" header doesn't match with following headerless block size, it will break the image.
And the same is with tap2mbd.
tap2mbhdd breaks the image
Append feature is not working in 0totap
Add more mbd utils
0tobin, 0tohob, 0totap fails to build under MinGW environment