The Allegra was expected to reach Desroches on the Indian Ocean island republic of the Seychelles by Wednesday morning. The Allegra is a sister ship of the ill-fated Costa Concordia, which capsized in January off the Italian coast, killing 32.
CNN, quoting the cruise company Costa Cruises, said the Allegra is carrying 636 passengers and a 413-member crew.
The ship left Diego Suarez, Madagascar, Saturday and was originally scheduled to arrive in the Seychelles Tuesday.
All passengers, most of them from Europe, eight from the United States and 13 from Canada, were reported in good health, CNN said, quoting the Italian coast guard.
The Seychelles coast guard said the cruise ship began drifting Monday in the Indian Ocean after a fire in the generator room.
Two tug boats also were en route to assist the Allegra.
CNN quoted the cruise line as saying the passengers Tuesday morning were served a cold breakfast, brought in by helicopter along with communications equipment.
Britain's Daily Telegraph reported the 29,000-ton Allegra's destination, Desroches, is a tiny 2 mile-by-1 mile island.
"As we understand it, the island will only be used as a transit point, to bring the passengers off the ship and then fly them on to (Seychelles' capital) Victoria," the report quoted the manager of the Desroches Island resort, the only hotel on the atoll, as saying.
Seychelles authorities said one of their planes had flown overhead and reported that the ship did not appear to be in danger, the BBC reported.