/*Calculate Cum_Rate*/
data cum;
set have;
LABEL='N';
retain CUM_RATE 0;
if CUM_RATE>=0.2 or RATE>=0.2 then CUM_RATE=0;
if _n_=1 then CUM_RATE=RATE;
else CUM_RATE=CUM_RATE+RATE;
if CUM_RATE>=0.2 then LABEL='Y';
n=_n_;
run;
/*One observation down shift to carry over the RATE on the next observation */
data temp;
set cum (firstobs=2);
n=n-1;
keep n RATE;
rename RATE=RATE_NEXT;
run;
/*Merge back to apply condition of Next Rate>=0.2 */
data want;
merge cum(in=x) temp;
by n;
if x;
if RATE_NEXT>=0.2 then LABEL='Y';
keep RATE LABEL CUM_RATE;
run;