Use double set statements will do it. It is much simpler than you thought.
data a;
input value date;
datalines;
2 1
3 1
4 1
10 1
3 2
5 2
6 2
8 2
11 3
13 3
8 3
7 3
;
data t2;
retain maxv .;
do until(last.date);
set a;
by date;
if first.date then maxv=.;
maxv=max(maxv,value);
end;
do until(last.date);
set a;
by date;
if maxv >=10 then value=.;
else;
output;
end;
run;
proc print;run;