WorldToScreenPoint conversion inconsistent

I’ve gotten the camera to follow my player pretty well. When the players position is past the half way height of the screen, the camera locks to the player. Otherwise the camera is locked to the player or at least that what is suppose to happen. As long as the character is ascending everything works great, when the player starts to fall everything gets a little glitchy.

Here is the code I am using to follow the player:

void FixedUpdate (){
    float x = _xStart;
    float y = _yStart;
    Debug.Log (player.position.y);
    Vector3 pp = camera.WorldToScreenPoint(player.position);
    Debug.Log(pp.y);
    Debug.Log (pp.y > Screen.height/2);
    switch(WorldManager.GetGameState()){
    	case GameState.LAUNCHED:
    		//check if player is past mid screen before following
    		x = pp.x > (Screen.width/2) ? player.position.x : _xStart;
    		y = pp.y > (Screen.height/2) ? player.position.y : _yStart;
    		break;
    }
    
    // Set the camera's position to the target position with the same z component.
    transform.position = new Vector3(x,y,transform.position.z);
}

The state and all that is working fine. What I’ve noticed is pp.y is jumping up and down on the players decent. The logs display the following (obviously simplified):

11.63518
192.9192
False
11.48117
633.3361
True
11.3255
192.7765
False
11.1682
619.8181
True

etc...

To me this points to there being a problem with camera.WorldToScreenPoint no converting the value properly? (which doesn’t make sense to me) Can anyone see anything that I’m messing up. If you need any more info please ask.

I have seen WorldToScreenPoint jitter, but not as bad as the OP’s output. I would guess that in this case it’s not actually a problem with WorldToScreenPoint, but with the camera snapping back and forth between centering on the character and some other location. In the code above, I don’t see where _xStart and _yStart are adjusted, and it seems like the camera would bounce between that position and the player’s position.