Detecting multiplication overflow on 6502

I have found that this routine sometimes fails to detect an overflow.

Example:
multiplicand = $0010
multiplier = $4e4d

The 32-bit product should be $0004e4d0

The result from omult16.a is:
Product: $e4d0
Carry: Clear

I can also see why it fails, and I can probably fix the routine so it works correctly, but then it won’t be as fast anymore.