Latest version with overflow checking