In Membership2 $_SESSION['m2_status_check'] is causing some unexpected behavior during the cron event 'ms_cron_check_membership_status'
it initially gets set here:
$_SESSION['m2_status_check'] = 'inv';
and then it gets checked in
the problem is that 'create_invoice' potentially gets called many times during the cron event 'ms_cron_check_membership_status'
but $_SESSION['m2_status_check'] gets reset after the first call to 'create_invoice'
the result is that the 1st invoice created during the cron job is set to STATUS_BILLED but all subsequent invoices created get set to STATUS_NEW
however, they should all be set to the same status