This line:
for (unsigned int icl=0; icl <tariff_pop.size();++icl)
{
arbitary_breaks_for_tariff.at(icl) * fmultiplier;
}
calculates a multiplication but doesn't store the result.
Perhaps it should read:
arbitary_breaks_for_tariff.at(icl) *= fmultiplier;