Unfortunately, gchart does not let you directly specify specific colors for specific values or ranges of values (you could do that in SAS/AF charts with the "color range object", but not in SAS/Graph charts).
The easiest way I know of to do that, is to add an extra variable to your data set, and use if/else statements to assign a value to that variable using if/else statements based on the >= rules you mentioned.
Then in the gchart, use the subgroup= option, and specify that new variable. The values of this variable will get mapped to the colors in the pattern statement (you have to get a little 'tricky' if your data does not always contain obsns for all the desired colors, by the way).
Here is an example, showing the basics:
data goals;
input bu rate1;
datalines;
1 2.6
2 .5
;
run;
data goals; set goals;
if rate1>=2 then colorval=1;
else colorval=2;
run;
pattern1 v=solid c=red;
pattern2 v=solid c=yellow;
proc gchart data=goals;
vbar bu / discrete sumvar=rate1 subgroup=colorval
refline=2 clipref nolegend;
run;