Op de wereldkampioenschappen zwemmen 2003 in Barcelona werd de Zuid-Afrikaan uitgeschakeld in de series van de 100 meter vlinderslag, op de 4x100 meter vrije slag eindigde hij samen Darian Townsend, Roland Mark Schoeman en Ryk Neethling op de achtste plaats.
Tijdens de Olympische Zomerspelen van 2004 in Athene strandde Ferns in de halve finales van de 50 meter vrije slag. Op de 4x100 meter vrije slag veroverde hij samen met Roland Mark Schoeman, Darian Townsend en Ryk Neethling olympisch goud, het kwartet verbeterde tevens het wereldrecord.
2006-heden
Op de Gemenebestspelen 2006 in Melbourne veroverde Ferns samen met Roland Mark Schoeman, Gerhard Zandberg en Ryk Neethling de gouden medaille op de 4x100 meter vrije slag. In Victoria nam de Zuid-Afrikaan deel aan de Pan Pacific kampioenschappen zwemmen 2006, op dit toernooi eindigde hij als vierde op de 50 meter vrije slag en de 100 meter vlinderslag en als vijfde op de 100 meter vrije slag. Samen met Gerhard Zandberg, William Diering en Roland Mark Schoeman eindigde hij als vijfde op de 4x100 meter wisselslag.
Op de wereldkampioenschappen zwemmen 2007 in Melbourne eindigde Ferns als vierde op de 100 meter vlinderslag en werd hij uitgeschakeld in de halve finales van de 50 meter vlinderslag. Op de 4x100 meter vrije slag eindigde hij samen met Ryk Neethling, Gerhard Zandberg en Roland Mark Schoeman op de vierde plaats, samen met Gerhard Zandberg, Cameron van der Burgh en Ryk Neethling eindigde hij als vierde op de 4x100 meter wisselslag.
Tijdens de Olympische Zomerspelen van 2008 in Peking bereikte de Zuid-Afrikaan de zesde plaats op de 100 meter vrije slag en strandde hij in de halve finales van de 100 meter vlinderslag. Samen met Darian Townsend, Roland Mark Schoeman en Ryk Neethling eindigde hij als zevende op de 4x100 meter vrije slag, op de 4x100 meter wisselslag bereikte hij samen met Gerhard Zandberg, Cameron van der Burgh en Darian Townsend de zevende plaats.
In Rome nam Ferns deel aan de wereldkampioenschappen zwemmen 2009, op dit toernooi eindigde hij als zevende op de 100 meter vlinderslag en werd hij uitgeschakeld in de series van de 100 meter vlinderslag. Samen met Graeme Moore, Darian Townsend en Roland Mark Schoeman eindigde hij als vijfde op de 4x100 meter vrije slag, op de 4x100 meter wisselslag strandde hij samen met George Du Rand, Cameron van der Burgh en Graeme Moore in de series.
Op de Pan Pacific kampioenschappen zwemmen 2010 in Irvine eindigde de Zuid-Afrikaan als achtste op de 100 meter vrije slag en als zestiende op de 50 meter vrije slag, samen met Gideon Louw, Roland Mark Schoeman en Graeme Moore sleepte hij de bronzen medaille in de wacht op de 4x100 meter vrije slag.