A fully defrag is very difficult, try deleting some old software and defrag again.
But if you have a little gap somewhere, and no file/program-part which belongs to the program in that sector has the size of the gap, the gap remains. So in the end is very hard to have a complete defrag, with no fragmentation left....