When a work unit for any project (SETI, Einstein, SIMAP, Malaria, SZTAKI, FAAH, and LHC), on both Windows and Linux, hits about 98% complete or hits the two minutes left mark, it downloads a new work unit (if available), and then switches to another project.
that's because your preferences say that boinc should download a new unit at that time, if you want it to do things differently you might want to adjust your "connect to network" preference
the reason it switches, it because a "check" is done on virtually any operation (update, download etc.) and when it checked, the other project had the most debt, so it started crunching that one instead
the author of the work scheduler is addressing this "excessive switching" issue (quite a problem on multiCPU machines, as it "checks" everytime i unit finishes, so the actual switch time can end up being minutes rather than hours) and other stupid things the core client does, and hopefully at least a few of the problems will be resolved eventually (maybe even in the 5.4 versions)
Is there a way to prevent this, and have it finish work units that are so close to completion? For the projects where I only get one WU done a day, it’s a bit frustrating to see something so close that will sit another 12 or 16 hours before being sent in.
adjust your cache is basically the answer