Uses NSInteger to allow negative values