update optional decimal logic