fixed overflow, but truncation isn't nice