diff --git a/src/mlp_train.c b/src/mlp_train.c
index 2e9568ba4e15b7174716bc3644899fba56064d62..769f503d6618a84b58c149339e73d7436db9ae30 100644
--- a/src/mlp_train.c
+++ b/src/mlp_train.c
@@ -121,8 +121,6 @@ double compute_gradient(MLPTrain *net, float *inputs, float *outputs, int nbSamp
 	double netOut[MAX_NEURONS];
 	double error[MAX_NEURONS];
 
-	for (i=0;i<outDim;i++)
-	   error_rate[i] = 0;
 	topo = net->topo;
 	inDim = net->topo[0];
 	hiddenDim = net->topo[1];
@@ -135,6 +133,8 @@ double compute_gradient(MLPTrain *net, float *inputs, float *outputs, int nbSamp
 	memset(W1_grad, 0, W1_size*sizeof(double));
 	for (i=0;i<outDim;i++)
 		netOut[i] = outputs[i];
+	for (i=0;i<outDim;i++)
+	   error_rate[i] = 0;
 	for (s=0;s<nbSamples;s++)
 	{
 		float *in, *out;