PS: A third possible implementation - if you want to rely on FLOOR and CEIL - is like this:
DOUBLE ROUND (DOUBLE x) { if (x >= L_(0.0)) return FLOOR (x + L_(0.5)); else return CEIL (x - L_(0.5)); } And another nit: > + HAVE_DECL_ROUND=0 > + AC_LIBOBJ([round]) > + ROUND_LIBM= If the lib/round.c substitute relies on floor, then it is wrong to set ROUND_LIBM to empty. In this case you need to set ROUND_LIBM="$FLOOR_LIBM" (and ensure that FLOOR_LIBM is already computed at this point in the configure file). Bruno