What you are experiencing seems to be an online defragmentation behaving erratically. Usually, an online defragger will process your whole volume -- regardless of whether changes have occured or not.
This behaviour means that you manipulated files while the defragger was running and it was not able to deal with these changes. Therefore, it had to restart the whole process from the beginning. There are several defragger tools on the market that do not have to restart and are capable of dealing with these situations.
The simplest solution would be to defrag your machine overnight when it is not in use. Hope this was helpful.
This was first published in August 2002