Hmm, I think this is a bug.
I've reported it to Jelsoft, but I don't know if it will be fixed in 3.0.x
Here is some code that should correct the behaviour
In functions_subscriptions.php
FIND
PHP Code:
$user = $DB_site->query_first("
SELECT user.*, subscriptionlog.pusergroupid
REPLACE that with
PHP Code:
$user = $DB_site->query_first("
SELECT user.*, subscriptionlog.pusergroupid, subscriptionlog.regdate
FIND
PHP Code:
if (($sub['nusergroupid'] > 0 AND $user['customtitle'] == 0) OR $reset_title)
ABOVE that ADD
PHP Code:
// Check if there are active subscriptions that
// - started during this subscription
// - are not finished
// - use the primary usergroup this subscription gives as previous usergroup
// and update their previous usergroup to this subscriptions previous usergroup
if ($sub['nusergroupid'] > 0)
{
$DB_site->query("UPDATE " . TABLE_PREFIX . "subscriptionlog SET pusergroupid = $user[pusergroupid] WHERE userid = $userid AND pusergroupid = $sub[nusergroupid] AND regdate > $user[regdate] AND status=1");
}