How to prevent evaluation.



I tried this to see the timing information.

load(pw)$

(%i3) showtime:true;
Evaluation took 0.0000 seconds (0.0000 elapsed)
(out3)
(%i4) for i : 1 thru 2000 do %if(i>0, expand((x-y)^100), expand((x-y)^100));
Evaluation took 13.0200 seconds (13.0200 elapsed)
(out4) done
%i5) for i : 1 thru 2000 do %if(i>0, expand((x-y)^100), 1);
Evaluation took 6.7700 seconds (6.7700 elapsed)
(out5) done
%i6) for i : 1 thru 2000 do %if(i>0, 1, expand((x-y)^100));
Evaluation took 7.0400 seconds (7.0400 elapsed)
(out6) done
%i7) for i : 1 thru 2000 do %if(i>0, expand((x-y)^100), 1);
Evaluation took 6.8200 seconds (6.8200 elapsed)
(out7)  done
(%i8  for i : 1 thru 2000 do %if(i>0, 1, 1);
Evaluation took 0.1500 seconds (0.1500 elapsed)
(out8)  done
(%i4)

It seems like in the %if function both the then part and the else part are always expanded even when only one needs to 
be evaluated.  Is there a way to stop evaluation of both parts?  This would make possible major speed improvements 
dealing with large expressions.

Rich