A federal investigation into Bonds' role in a steroids case and a report that the slugger tested positive for amphetamines complicated the negotiations.
Neither side said much about those problems during the 7 1/2-week delay. That secrecy, plus lingering ill will between Bonds and team owner Peter Magowan, prompted talk the Giants might try to back out of the deal - despite the left fielder being 22 home runs from breaking Hank Aaron's career mark of 755.
But with spring training starting next month, and the All-Star game in San Francisco this summer, the sides settled their differences.
Bonds traveled to the Bay Area from his home in Beverly Hills, Calif., for the physical. If the 42-year-old star and his oft-injured knees check out OK, he'll sign a one-year deal for $15.8 million.
He can earn another $4.2 million in performance bonuses based on how much he plays. If he matches last year's effort - 493 plate appearances, 130 games - he'll get the whole amount.
Bonds hit .270 with 26 home runs and 77 RBIs, and drew 115 walks. A day after the season ended, Magowan said Bonds would no longer be the centerpiece of the franchise if he played for the Giants in 2007.
Bonds filed for free agency and the seven-time NL MVP drew interest from Oakland, St. Louis, San Diego and other teams.
The Giants and Bonds agreed on financial terms on Dec. 7, the day that baseball's winter meetings ended. Since then, it's been slow going on finalizing the deal.
A federal grand jury is still investigating whether Bonds perjured himself in 2003 when he testified during the BALCO steroid distribution case that he hadn't knowingly taken any performance-enhancing drugs.
Bonds failed an amphetamines test last season, the New York Daily News reported this month. The newspaper said that when Bonds first learned of the result, he attributed it to a substance he took from teammate Mark Sweeney's locker.
In a public statement, Bonds cleared Sweeney and said, "he did not give me anything whatsoever and has nothing to do with this matter." Bonds didn't address whether he took amphetamines.
Bonds, who has hit 734 home runs in 21 major league seasons, has repeatedly denied using performance-enhancing drugs.