Adopt RoundFunction class to work around (real*I).is_real is None