The 49ers planned to have Jimmy Garoppolo traded by the start of the new league year, freeing up $25.5 million in cap space and turning everything over to second-year quarterback Trey Lance.
When the season ended and Garoppolo said his goodbyes, the 49ers appeared to be in a good position with the quarterback carousel getting ready to turn. If a few dominoes fell as expected, Garoppolo likely would be one of, if not the best option on the market.
But the dominoes didn't fall the way many anticipated, and the 49ers, victims of bad luck, still have Garoppolo on their roster on March 24.
Stay in the game with the latest updates on your beloved Bay Area and California sports teams! Sign up here for our All Access Daily newsletter.
When the 49ers' season ended with a loss in the NFC Championship Game to the Los Angeles Rams, there was a clear list of quarterback-needy teams who likely would be interested in Garoppolo's services. The Pittsburgh Steelers, New Orleans Saints, Washington Commanders, Denver Broncos and Carolina Panthers all seemed like possible landing spots.
What was clear is that Garoppolo wouldn't be the first QB off the board. He'd have to wait for the bigger fish -- Aaron Rodgers and Russell Wilson -- to make their decisions.
All signs pointed to Rodgers staying with the Green Bay Packers, knowing they were his best chance to win another Super Bowl before he retired. At the NFL Scouting Combine, Seattle Seahawks head coach Pete Carroll seemed to insinuate that they would not be trading Wilson. At the same time, another quarterback entered the picture as the Indianapolis Colts decided to rid themselves of Carson Wentz. The Colts' decision added another QB to the trade market but also made them a possible destination for Garoppolo.
If Rodgers and Wilson stayed pat, Garoppolo and Wentz were set to be the best available signal-callers on the market, with five to seven teams in need of a quarterback upgrade.
San Francisco 49ers
Find the latest San Francisco 49ers news, highlights, analysis and more with NBC Sports Bay Area and California.
Then, everything changed March 8 when the Broncos acquired Wilson from the Seahawks just hours after Rodgers chose to stay with the Packers. On that same day, Garoppolo underwent surgery to repair the capsule in his throwing shoulder.
Thus, the QB carousel started moving without Garoppolo and the 49ers.
Wilson's move to Denver took the Broncos off the QB-needy list and removed Wilson from the trade market. That forced the Commanders, who reportedly had their trade offer for Wilson rejected, to spring into action and trade for Wentz. The Commanders reportedly chose Wentz over Garoppolo due to questions about when Garoppolo would be ready after surgery.
Even with the Broncos and Commanders off the board, the 49ers still were in a good spot to deal Garoppolo.
Then, on March 11, another domino fell that fully changed the equation on the QB carousel.
When a Texas grand jury declined to indict Deshaun Watson, it was a sign to several NFL teams that they could engage the Houston Texans in trade discussions for the 26-year-old quarterback.
Watson went to the front of the line on the QB trade market, forcing Garoppolo and the 49ers to wait longer for their market to develop.
At the start of the NFL's open-negotiating period, the Pittsburgh Steelers, always seen as one of the likeliest landing spots for Garoppolo, agreed to a two-year contract with Mitchell Trubisky, taking another piece off the board for the 49ers.
The Watson trade threw a massive wrench into the 49ers' plan to trade Garoppolo. It forced two other starting quarterbacks onto the trade market as both Matt Ryan and Baker Mayfield became available after their respective teams got involved in the Watson bidding.
The Cleveland Browns eventually landed Watson, spelling the end of Mayfield's time in Cleveland.
With Watson off to Cleveland, the Saints, who also were involved in the trade talks, went to Plan B and re-signed Jameis Winston.
The Colts still seemed like the ideal fit for Garoppolo, but the Watson trade hurricane made Ryan, a former league MVP, become available and Indy pounced. The Atlanta Falcons chose to replace Ryan with Marcus Mariota, a cheaper and healthier option than Garoppolo.
RELATED: Maiocco: Truth about whether Lance is ready to start
That's where we sit now. Garoppolo still is on the 49ers' roster and there are only two teams who still are in need of a quarterback. But neither the Seahawks nor Panthers seem like fits for Garoppolo. At least, not right now. Add in that Mayfield, who is cheaper and younger, still is available and the 49ers were victims of brutal luck on the quarterback carousel.
Had Wilson stayed in Seattle or Watson hadn't become available, Garoppolo might not still be a 49er.
But what's also clear is that the 49ers overrated Garoppolo's value on the open market and gave themselves no leverage on the trade market. Once the 49ers drafted Lance, it was clear they were moving on from Garoppolo and thus their negotiating power was stripped.
The 49ers will hold onto Garoppolo for now. He's expected to be able to start throwing again by late June or early July. Perhaps they'll find a taker at the draft or after OTAs.
San Francisco's plan at quarterback hasn't changed. The 49ers believe in Lance and are ready to turn the team over to him in full.
General manager John Lynch has said the 49ers have budgeted for the possibility of having Garoppolo on the roster next season. That seems like an untenable situation to put a young quarterback in during his first season as a starter. Garoppolo is well-liked in the locker room and, despite his flaws, has won a lot during his time in San Francisco.
The 49ers will either find a taker for Garoppolo or have to cut him. After everything broke against them on the QB carousel, it seems like the latter might end up being their only option.