Everything makes sense and is clear, except the objection misiak proposed (I actually thought about this before I even saw his response ). It seems (at first sight, anyway) that the percentage of fresh swap remaining should be <= the total amount of swap space remaining reported by free. But I'm sure I'm wrong and you will clarify things. EDIT: One way I see this being possible is if the way FlopSwap works is by partitioning the swap space. So you might keep internally a cursor where you start writing sequentially (which is set for example when you make a fresh swap), but which is different of how free swap space is calculated by the free command. Just speculating.
Each block is 512 bytes. You have to divide by 2 to get kB. And then of course by 2048 to get MB.