decimal number can be negative
avoid interrupt handler recursion
add user defined interrupt handler
fix negative num bug