Problema em Código Simples

Estou com um problema nesse código abaixo:

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <locale.h>

using namespace std;

int main() {
	setlocale(LC_ALL,"");
	
	int valor, quant[9];
	
	for(int c=0; c<10; c++) {
		quant[c]=0;
	}
	
	for(int i=0; i<10; i++) {
		cout << "Digite um valor de 0 a 9: ";
		cin >> valor;
		quant[valor]++;
	}
	
	cout << endl;
	
	for(int a=0; a<10; a++) {
		cout << "O número " << a << ", foi digitado " << quant[a] << " vezes." << endl;
	}
	
	
	system("PAUSE");
	return 0;
}

O que acontece é o seguinte, o usuário deve digitar 10 números de 0 a 9 (aleatoriamente), e o no final o programa deve mostrar na tela quantas vezes cada na número (de 0 a 9) foi escrito.
Até o penúltimo número está tudo certo, mas quando chega no último, (o 9) não aparece quantas vezes foi escrito, e sim qual número foi escrito na posição 9 do meu vetor.
Peço que me ajudem a solucionar esse probleminha, obg.

Você tá declarando o vetor com 9 posições e quer guardar 10 números.