refactor price, add support for negative numers in fpn