Right, and this is a problem... it means that the NewLocalSince timestamp we need to store, should be the maxSinceTimestamp of the contacts _after_ they've been saved (and then presumably retrieved again...) from the local database.  That is to say: the maxSinceTimestamp calculated from the mutatedPrevRemote list may actually be wrong (most likely will be wrong) if no local changes occurred which "made it into" the mutatedPrevRemote list during the sync process.