There are two possible issues.

1) You are de-activating "fire at will", right? Just pressing "halt" will not stop the archers from firing at will.

2) Even after pressing "fire at will" the archers will for some reason still fire the shot they are reloading for. This falls into the "silly bug" category. After that shot they do stop as ordered.

So if you've told your archers to fire at a specific unit you have to press "fire at will" and "halt". Otherwise just pressing "fire at will" should make them stop shooting (eventually). That's how it works for me anyhow.