É porque você está definindo o parâmetro no .NET como um ReturnValue, o que equivaleria ao cenário em que você usa RETURN dentro do procedimento armazenado para retornar um inteiro (o que você não está fazendo).
Em vez disso, você precisa definir o parâmetro @strFailedEMPID como ParameterDirection.Output em seu código .NET. Se você quiser passar um valor de entrada E receber um de saída através do parâmetro, use ParameterDirection.InputOutput.
Depois de executar o sproc, você apenas:
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;
Então....
lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar);
lsqlParam.Value = "0";
lsqlParam.Direction = ParameterDirection.InputOutput;
lsqlCmd.Parameters.Add(lsqlParam);
lsqlCmd.ExecuteNonQuery();
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;