Я предлагаю вам пройтись по коду с помощью отладчика, и вы увидите, как на самом деле меняются ваши значения.
Ваш отрицательный интерес представляет интереса_neg = -0,002.который вы умножаете на сумму.
Скажем, у вас следующая ситуация
double balance = -100;
if ( balance >= 0 ) balance *= interest_pos;
else balance *= interest_neg; // balance = -100 * -0.002 = +0.2
Отрицательный интерес не имеет никакого смысла в этом значении, как вы можете видеть.Если бы у меня был долг в миллион долларов, в следующем месяце у меня было бы 200 долларов.Чем больше у меня долгов, тем больше денег у меня будет в следующем месяце.
Поэтому, когда у вас отрицательный баланс, вы снова делаете его положительным.Возможно, ваш отрицательный интерес должен быть 1,002, аналогично вашему положительному интересу.
else balance *= interest_neg; // balance = -100 * 1.002 = -100.2