Neck rotation script not working

I want to make an NPC able to look at a player, especially from above or below, and it looks somewhat fine when looking left and right, but for some reason when the player is above the NPC looks down and when the player is below the NPC looks up

The code
local unit = -(NPC.PrimaryPart.CFrame.p - player.PrimaryPart.Position).unit

game:GetService("TweenService"):Create(neck
	,TweenInfo.new(.1,Enum.EasingStyle.Exponential,Enum.EasingDirection.Out)
	,{C0 = cframe0 * CFrame.new(Vector3.new(0, 0, 0), unit) * CFrame.Angles(0, -math.rad(NPC.PrimaryPart.Orientation.Y), 0)}):Play()

Any help is appreciated.