C ++: arredondando para o múltiplo mais próximo de um número

OK - Estou quase envergonhado postando isso aqui (e vou excluir se alguém votar para fechar), pois parece uma pergunta básica.

Essa é a maneira correta de arredondar para um múltiplo de um número em C ++?

Sei que existem outras perguntas relacionadas a isso, mas estou especificamente interessado em saber qual é a melhor maneira de fazer isso em C ++:

int roundUp(int numToRound, int multiple)
{
 if(multiple == 0)
 {
  return numToRound;
 }

 int roundDown = ( (int) (numToRound) / multiple) * multiple;
 int roundUp = roundDown + multiple; 
 int roundCalc = roundUp;
 return (roundCalc);
}

Atualização: Desculpe, provavelmente não deixei clara a intenção. aqui estão alguns exemplos:

roundUp(7, 100)
//return 100

roundUp(117, 100)
//return 200

roundUp(477, 100)
//return 500

roundUp(1077, 100)
//return 1100

roundUp(52, 20)
//return 60

roundUp(74, 30)
//return 90

EDIT: Obrigado por todas as respostas. Aqui está o que eu fui:

int roundUp(int numToRound, int multiple)  
{  
 if(multiple == 0)  
 {  
  return numToRound;  
 }  

 int remainder = numToRound % multiple; 
 if (remainder == 0)
  {
    return numToRound; 
  }

 return numToRound + multiple - remainder; 
}  

questionAnswers(28)

yourAnswerToTheQuestion