It keeps reading unused blocks instead of just the used ones. It's also writing way more blocks than there were originally, nearly filling the disk. That's good irony.
I think instead of used or unused blocks, something to indicate how much per block were used would help.
The version of Defrag from DOS 6.22 I remember differentiated between unused, partially used, and used (full) blocks. When you'd see a lot of partially used blocks get condensed into a few full blocks, it felt like your disk was getting SO tidy!
A bit like trying to defrag an SSD and shooting write amplification through the roof.
it also doesn’t finish, i was hoping for the zoomie part - it never came.