Add location to to profile2 just after the user registers
Try using hook_user_insert instead. The $account will have $account-&gt;uid set at that stage.

P.S wrapping hook_user_presave in that condition looks wrong and probably won't work with the hook registry cache.