*
;
/* Rounds up or down to nearest roundoff unit
   written: November 21, 1997
   Arnold Schick                               */

%macro rnddown (variable, unit);
   abs(&unit)*floor(&variable/abs(&unit))
%mend;

%macro rndup (variable, unit);
   abs(&unit)*ceil(&variable/abs(&unit))
%mend;

Example:

data one;
  input a b;
  down = %rnddown(a,0.01);
  up   = %rndup  (b,0.01);
cards;
1.2345  5.645
0.768  -4.200
7.9999 12.431
;
run;

data one; retain a down b up; set one; run;
proc print data=one; run;

*
;