negative values handled