I'm trying to simulate a 4-link suspension in CaRMetal, but I'm having trouble with a constrain that has two solutions.

In the attached (CaRMetal 4.0.2) file (also at http://rf.com.br/pub/suspension.zip), the upperArm segment end point can be defined by the intersection of upperArmLengthSphere with axleAnchorsDistanceSphere with the plane P84-P85-P86.

The problem is that there are two points where these elements intersect, so when we move the axleLowerAnchor up and down, the upperArm "jumps" from one solution to the other.

Can someone point me to a way to restrict the intersection to a single solution?

I looked at your file, looks a bit strange to me..
As you can see in the zir file, P128 point is superhidden, it's the 2nd intersection point, and it is not 3D. Actually, I don't know how you got it...
A few ideas, I'm not really convinced... :
- try create the intersection in 3D (with 3D intersection tool between curves). Problem is the intersection between the two 3D circles should work and it doesn't... You say this is an intersection between two spheres and a plane. Maybe you could try create first the intersection circle between the two spheres and then try to create the intersection with another circle made with the plane.
- create first intersection point in the zir file. Then, with an if expression, you could switch from P128 to that new point... so that in appearance it wouldn't switch (!). (that's very ugly option...)