Door mechanic not working correctly!

I have been working on a game close to Apex Legends and the door system I have coded works but it bugs out on some doors.

Video:

Code:

local _Door = {}

function _Door:SetCollisions()	
	--for _, Part in pairs(workspace._THINGS.Doors:GetDescendants()) do
	--	if Part:IsA("BasePart") or Part:IsA("Part") or Part:IsA("Mesh") or Part:IsA("MeshPart") then
	--		game:GetService("PhysicsService"):SetPartCollisionGroup(Part, "Doors")
	--	end
	--end
	return
end

function _Door:DoorFunc(door)	
	local Amount = 5
	local Door = door.PrimaryPart
	local Pivot = Door:GetPivot()
	local Offset = Pivot:Inverse() * Door.CFrame
	local RotDoor = door:GetAttribute('Rot')
	
	if door.Main and door.Main.IsDoorOpened.Value == false then
		--door.Main.Keybind.ProximityPrompt.ActionText = "Close Door"
		door.Main.Keybind.ProximityPrompt.ActionText = ""

		print(RotDoor.."Top")

		repeat 				
			task.wait(math.random(0, 0.1))
			if RotDoor == 0 then
				Pivot *= CFrame.Angles(0,math.rad(Amount), 0) 
				Door.CFrame = Pivot * Offset
			elseif RotDoor == 180 then
				Pivot *= CFrame.Angles(0,math.rad(-Amount), 0) 
				Door.CFrame = Pivot * Offset
			end
			Door.CFrame = Pivot * Offset
		until Door.Orientation.Y == 90

		door.Main.IsDoorOpened.Value = true

	elseif door.Main and door.Main.IsDoorOpened.Value == true then
		--door.Main.Keybind.ProximityPrompt.ActionText = "Open Door"
		door.Main.Keybind.ProximityPrompt.ActionText = ""

		print(RotDoor.."Bottom")

		repeat 
			task.wait(math.random(0, 0.2))
			if RotDoor == 0 then
				Pivot *= CFrame.Angles(0,math.rad(-Amount), 0) 
				Door.CFrame = Pivot * Offset
			elseif RotDoor == 180 then
				Pivot *= CFrame.Angles(0,math.rad(Amount), 0) 
				Door.CFrame = Pivot * Offset
			end
			Door.CFrame = Pivot * Offset
		until Door.Orientation.Y == RotDoor

		door.Main.IsDoorOpened.Value = false
	end
end

return _Door

Rot Meaning:
Rot is the normal rotation of the door

How is this supposed to repeat until the door orientation y is positive? It’s getting negative when the rotdoor is 180. Also, i’m not sure if that’s how math.rad works.

as you see from the video the door fixes itself after you open and close it for the first time. so they wouldn’t be the problem.