add sign preserving option