'Return the ceiling of self, as an integer.
For a finite Decimal instance self, return the least integer n
such that n >= self.  If self is infinite or a NaN then a
Python exception is raised.'

def __ceil__(self):

    if self._is_special:
        if self.is_nan():
            raise ValueError('cannot    round    a    NaN')
        else:
            raise OverflowError('cannot    round    an    infinity')
    return int(self._rescale(0, ROUND_CEILING))
