I'm trying to make Haste work properly, but i can't seem to get it working, with whatever i'm trying to do.

This is the code.

- Edit: forgot to mention, im trying to make it hit 0.00 after reaching 6.8K but i want it to keep going onwards without affecting 0.00 after that

Code:
void Player::ApplyRatingMod(CombatRating combatRating, int32 value, bool apply)
	{
	switch (combatRating)
		{
			case CR_HASTE_MELEE:
			{
			if (CR_HASTE_MELEE >= 6800)
				{
				SetFloatValue(UNIT_MOD_CAST_SPEED, 0);
				SetFloatValue(UNIT_FIELD_BASEATTACKTIME + BASE_ATTACK, 1);
				SetFloatValue(UNIT_FIELD_BASEATTACKTIME + OFF_ATTACK, 1);
				SetFloatValue(UNIT_FIELD_BASEATTACKTIME + RANGED_ATTACK, 1);
				}
				else
					{
					SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f);
					SetRegularAttackTime();
					}
				}
			break;
			}
				float oldRating = m_baseRatingValue[combatRating];
				m_baseRatingValue[combatRating] += (apply ? value : -value);

				// explicit affected values
				float const multiplier = GetRatingMultiplier(combatRating);
				float const oldVal = oldRating * multiplier;
				float const newVal = m_baseRatingValue[combatRating] * multiplier;
				switch (combatRating)
			{
			case CR_HASTE_MELEE:
			ApplyAttackTimePercentMod(BASE_ATTACK, oldVal, false);
			ApplyAttackTimePercentMod(OFF_ATTACK, oldVal, false);
			ApplyAttackTimePercentMod(BASE_ATTACK, newVal, true);
			ApplyAttackTimePercentMod(OFF_ATTACK, newVal, true);
			break;
			case CR_HASTE_RANGED:
			ApplyAttackTimePercentMod(RANGED_ATTACK, oldVal, false);
			ApplyAttackTimePercentMod(RANGED_ATTACK, newVal, true);
			break;
			case CR_HASTE_SPELL:
			ApplyCastTimePercentMod(oldVal, false);
			ApplyCastTimePercentMod(newVal, true);
			break;
			default:
		break;
	}
}
If anyone has a clue on what to do any help would be appreciated!