I can do it with more code but no loops!
*Data*
china;US;nigeria;mexico;russia
iindia;austria;japan;chile
*Script*
BEGIN{ FS=";" }{
insert=$param
ix=index($0, insert) + length(insert)
if (NF <= $param) {
line = substr($0,0,ix) ";NEW;" substr($0,ix,length($0))
gsub(";;",";",line)
gsub(";$","",line)
print line
} else {print}}
*Example*
Microknoppix v # awk -f replaceNth.awk -v param=5 countries
china;US;nigeria;mexico;russia;NEW
iindia;austria;japan;chile