user_presave and user status I have written this hook in my custom module, just to track the status changes of the users.
/**
 * Implements @see hook_user_presave
 */
function mycustommodule_user_presave(&amp;$edit, $account, $category) {  
$account_user_id_=$account-&gt;uid ;       
 $new_status=  $edit['status'];
 $previous_status= $account-&gt;status;
watchdog('attention', 
     'User  %ui changed status to: %newstat, previous status was %previousstat', 
     array('%ui' =&gt; $account_user_id_, '%newstat' =&gt; $new_status, '%previousstat' =&gt; $previous_status, WATCHDOG_NOTICE));
}

I noticed for example that when a user activates his newly created account by clicking on the link sent by email, the status moves to 1 which is good .
But I also noticed other message that I couldn't know its cause:
&quot;user 34 changed status to: , previous status was 1&quot; . What makes the status of a user moves from 1 to  null ?
You get NULL for $edit['status'] because the status hasn't been changed. The functions that calls user_save(), which invokes hook_user_presave() contain the following code.
// user_profile_form_submit()

$account_unchanged = clone $account;
entity_form_submit_build_entity('user', $account, $form, $form_state);

// Populate $edit with the properties of $account, which have been edited on
// this form by taking over all values, which appear in the form values too.
$edit = array_intersect_key((array) $account, $form_state['values']);
user_save($account_unchanged, $edit, $category);

// user_register_submit()

$account = $form['#user'];
entity_form_submit_build_entity('user', $account, $form, $form_state);

// Populate $edit with the properties of $account, which have been edited on
// this form by taking over all values, which appear in the form values too.
$edit = array_intersect_key((array) $account, $form_state['values']);
$account = user_save($account, $edit);

As the comment says, $edit contains only the account properties that have been changed, not every property. If you want to obtain the status value, you should use the following code.
$new_status = isset($edit['status']) ? $edit['status'] : $account-&gt;status;