WP_CRON issue with UTC and local time

It seems you are comparing GMT time with the local time before you update the user meta.

Try WP function current_time( $type, $gmt = 0 );

$current_time = current_time('timestamp', 0) // local time
$current_time = current_time('timestamp', 1) // GMT time

I think you need

$current_time = current_time('timestamp', 0) // local time

instead of

$current_time       = time();

Also take a look at current_time function

Edit:

Also i noticed your code where:

if( ($current_time < $user_start) && ($current_time > $user_finish) ) {
        update_user_meta( $user_id, 'mblocation', 'away' );
    }

$current_time is in Unix timestamp format and the $user_start or $user_finish is in formatted date, you should convert $user_start and $user_finish to timestamp as well. You need to do the same with other code where it is applicable.