Is there any numerically stable angle bisector algorithm?

**The problem is the following:**

* Given three vectors (2 dimensional) A,B,C
* Find the bisector of angle B (angle between AB and BC)

Actually I'm computing it in the following way:

* Normalize AB
* Normalize BC
* Find (AB+CD)/2f (Mid Point)
* **The bisector** is line passing between B and the Mid Point.

The problem with my approach is that when the angle is almost 180° (AB almost parallel to BC) the bisector is very inaccurate (of course because mid point is almost coincident with B). The current algorithm is so inaccurate that sometimes the resulting bisector is almost parallel to one of the other 2 segments.

And yes there are no "cast" problems, all computations are done in single precision floating point.