Note the two segfaults and the Object output types, they should be cured if we raise errors for all complex types. I suspect this function should preserve the type of the second argument.

remainder
not symmetric
in1       ?  , b  , B  , h  , H  , i  , I  , l  , L  , q  , Q  , f  , d  , g  , F  , D  , G  ,
        --------------------------------------------------------------------------------------
in2  ?  | b  , b  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , O  , O  , err,
in2  b  | b  , b  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , O  , O  , err,
in2  B  | B  , h  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , O  , O  , err,
in2  h  | h  , h  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , O  , O  , err,
in2  H  | H  , i  , H  , i  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , O  , O  , err,
in2  i  | i  , i  , i  , i  , i  , i  , q  , i  , q  , q  , d  , d  , d  , g  , O  , O  , err,
in2  I  | I  , q  , I  , q  , I  , q  , I  , q  , I  , q  , Q  , d  , d  , g  , O  , O  , err,
in2  l  | l  , l  , l  , l  , l  , l  , q  , l  , q  , q  , d  , d  , d  , g  , O  , O  , err,
in2  L  | L  , q  , L  , q  , L  , q  , L  , q  , L  , q  , Q  , d  , d  , g  , O  , O  , err,
in2  q  | q  , q  , q  , q  , q  , q  , q  , q  , q  , q  , d  , d  , d  , g  , O  , O  , err,
in2  Q  | Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , d  , g  , O  , O  , err,
in2  f  | f  , f  , f  , f  , f  , d  , d  , d  , d  , d  , d  , f  , d  , g  , O  , O  , err,
in2  d  | d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , g  , O  , O  , err,
in2  g  | g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , seg, seg, err,
in2  F  | O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , err, O  , O  , err,
in2  D  | O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , O  , err, O  , O  , err,
in2  G  | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,

Chuck