Вот, кстати, и пример граблей, буквально вчера нашли:
От сервиса получаем курс как число или "--" в случае отсутствия. Дальше был такой код:
$price = count($price) > 0 ? (float) str_replace(',', '.', $price[0]) : 0;
Который выполнялся неверно, т.е. "--" превращался в -0. Понятно что "--" здесь не в тему, но таковы реалии, сервис не наш. Что характерно (integer) дает просто 0.