Repeat wait until doesn't function backwards

I’m attempting to make the text go visible one by one beforehand, then after the blur has faded, the text goes invisible one by one but backward. However, at the end, it tends to pause after making “game engine” transparent. What’s the concurrent issue here? I’ve checked playergui and the texts seem to keep on adding up, ignoring until value. This is the code:

--[ Variables
local frame = script.Parent
local dogesTxt = frame["Doge's"]
local testingTxt = frame.Testing
local gameTxt = frame.Game
local groupedTxt = {dogesTxt, testingTxt, gameTxt}	
local timeData = os.date("*t")
local blur = Instance.new("BlurEffect")
--[ Setup
game.ReplicatedFirst:RemoveDefaultLoadingScreen()
 if game:IsLoaded() then do
    blur.Parent = game.Workspace.CurrentCamera
    for _, i in pairs(groupedTxt) do
      repeat wait(.003) i.TextTransparency = i.TextTransparency - .03
      until i.TextTransparency <= 0
       if gameTxt.TextTransparency <= 0 then
       repeat wait(.003) blur.Size = blur.Size - .5
       until blur.Size <= 0
        repeat wait(.003) i.TextTransparency = i.TextTransparency + .09
        until dogesTxt.TextTransparency >= 1
         end
      end
   end
end

The showcase of how it looks like currently: https://gyazo.com/7aee89e99b2116f204354760f11b926e

The TextTransparency in labels as of now:
image image image

You can try use TweenService to get fade effect and then just use Tween.Completed:Wait() and do same for other texts

Good idea! Thank you, I’d never think of that. I’ll do it now and see if it works.