Low oil pressure is believed to have caused Viking Sky to stall and drift dangerously close to the shore.
Norwegian Maritime Authority released a statement on its website, claiming that the ship’s engines were automatically shut down by alarms onboard.
Viking Sky, which had almost 1,400 passengers and crew onboard, sent out a mayday signal on Saturday as rough seas carried the ship to within 100 metres of land.
The crew managed to restart one of the four engines before the ship edged closer to danger.
The Norwegian Maritime Authority said: “Our conclusion is that the engine was directly caused by low oil pressure.
“The level of lubricating oil in the tanks was within set limits, however relatively low, when the vessel started to cross Hustadvika.
“The tanks were provided with level alarms, however these had not been triggered at this time.
“The heavy seas in Hustadvika probably caused movements in the tanks so large that the supply to the lubricating oil pumps stopped.
“This triggered an alarm indicating a low level of lubrication oil, which in turn shortly thereafter caused an automatic shutdown of the engines.”
On Wednesday, Viking Sky, built in 2017, left the port of Molde, Norway, where it had been anchored since Sunday and went for repairs at a shipyard in Kristiansund.
Rescue services lifted 479 people to safety from the ship and 20 people were reportedly injured amid the chaos caused by engine failure in rough seas.