diff --git a/maca_morpho/src/fplm.h b/maca_morpho/src/fplm.h
index 206d1a499bd0f646292670d3c03a2ba833de0d20..5806772b0bb9d18242182c71cdb687baac146dc7 100644
--- a/maca_morpho/src/fplm.h
+++ b/maca_morpho/src/fplm.h
@@ -11,6 +11,6 @@
 	int choose_class(char* class);
 	int extract_class_position(CLASS class);
 	void extract_morpho_feature(CLASS class, char* morpho_feature, char* morpho);
-	int associate_number_to_classes(FILE* classes_code, int class);
+	int associate_number_to_classes(FILE* classes_code, CLASS class, char* morpho_feature, int current_morpho_feature);
 	
 #endif
diff --git a/maca_morpho/src/fplm2cff_fct.c b/maca_morpho/src/fplm2cff_fct.c
index 1f0ceaa96b506f99a67886f38f5a2f67dd361c07..7417a745a0976d705c7402029139310201040379 100644
--- a/maca_morpho/src/fplm2cff_fct.c
+++ b/maca_morpho/src/fplm2cff_fct.c
@@ -74,7 +74,6 @@ void create_cff(context* ctx)
 void write_cff(FILE *cff, CLASS class, FILE* code_class, char* form, char* morpho, feat_vec *fv, feat_model *fm, dico *dico_features)
 {
 	int i=0;
-	int tmp_code;
 	char morpho_feature[10];
 	extract_morpho_feature(class, morpho_feature, morpho);
 
@@ -86,26 +85,17 @@ void write_cff(FILE *cff, CLASS class, FILE* code_class, char* form, char* morph
 		feat_vec_print(cff, fv);
 		return;
 	}
-	//for example if the tense is 'PS' the class' number will be the ASCII code of 'P' concatenate with the ASCII code of 'S'
-	if(class != PERSON)
+	if(class == TENSE)
 	{
-		FILE* tmp = fopen("tmp.txt","w+");
-		for(i=0; i<(int)strlen(morpho_feature); i++)
-			fprintf(tmp,"%d", morpho_feature[i]); 
-		rewind(tmp);
-		fscanf(tmp, "%d", &tmp_code);
-		fprintf(cff,"%d", associate_number_to_classes(code_class,tmp_code));
+		fprintf(cff,"%d", associate_number_to_classes(code_class,class,morpho_feature,0));
 		form2fv(form, fv, fm, dico_features, ADD_MODE); 
 		feat_vec_print(cff, fv);		
-		fclose(tmp);
-		remove("tmp.txt");
 	}
 	else
 	{
 		for(i=0; i<(int)strlen(morpho_feature);i++)
 		{
-			tmp_code = morpho_feature[i];
-			fprintf(cff,"%d", associate_number_to_classes(code_class,tmp_code));
+			fprintf(cff,"%d", associate_number_to_classes(code_class,class,morpho_feature,i));
 			form2fv(form, fv, fm, dico_features, ADD_MODE); 
 			feat_vec_print(cff, fv);		
 		}
diff --git a/maca_morpho/src/fplm_fct.c b/maca_morpho/src/fplm_fct.c
index 4a40a967d12744c2d8d7130d4eaee5bc4630375b..dce8bfdee1e8bec9e642d95c220165109e49246f 100644
--- a/maca_morpho/src/fplm_fct.c
+++ b/maca_morpho/src/fplm_fct.c
@@ -89,18 +89,30 @@ void extract_morpho_feature(CLASS class, char* morpho_feature, char* morpho)
 	}
 }
 
-/**Write the code_class file (use in predict to know the real class)
+/** Write the code_class file (use in predict to know the real class)
  * Return the class' code**/
-int associate_number_to_classes(FILE* classes_code, int class)
+int associate_number_to_classes(FILE* classes_code, CLASS class, char* morpho_feature, int current_morpho_feature)
 {
-	int code=0;
-	int cl;
-	char tmp[10];
+	int code = 0;
+	char tmp[20];
 	rewind(classes_code);
 	fscanf(classes_code,"%s",tmp);
-	while(fscanf(classes_code,"%d %d\n",&code,&cl) == 2)
-		if(cl == class)
-			return code;
-	fprintf(classes_code, "%d %d\n", code+1, class);
+	while(fscanf(classes_code,"%d %s\n",&code,tmp) == 2)
+	{
+		if(class == TENSE)
+		{
+			if(!strcmp(tmp, morpho_feature))
+				return code;
+		}
+		else
+		{
+			if(tmp[0] == morpho_feature[current_morpho_feature])
+				return code;	
+		}
+	}
+	if(class == TENSE)
+		fprintf(classes_code, "%d %s\n", code+1, morpho_feature);
+	else
+		fprintf(classes_code, "%d %c\n", code+1, morpho_feature[current_morpho_feature]);
 	return code+1;
 }
diff --git a/maca_morpho/src/predict_fct.c b/maca_morpho/src/predict_fct.c
index 13f0df7146cd0635d262a95c87520b0050b7d78e..59238eaec4adc977cbba9c36d6d131aa4a08d5d6 100644
--- a/maca_morpho/src/predict_fct.c
+++ b/maca_morpho/src/predict_fct.c
@@ -99,7 +99,7 @@ void make_prediction(FILE* predictions, FILE* code_class, CLASS cl, int* errors,
 void errors_nb(FILE* code_class, CLASS class, int class_predicted, int* errors, char* morpho)
 {
 	int i;
-	int size = 0;
+	int size = 10;
 	int real_class[10];
 	char morpho_feature[10];
 	extract_morpho_feature(class,morpho_feature,morpho);
@@ -113,34 +113,25 @@ void errors_nb(FILE* code_class, CLASS class, int class_predicted, int* errors,
 int extract_real_class(FILE* code_class, CLASS class, char* morpho_feature, int* real_class)
 {
 	int size = -1;
-	int tmp_code;
 	int i;
 	if(morpho_feature[0]=='\0')
 	{
 		size++;
 		real_class[size]=0;
 	}
-	else if(class != PERSON)
+	else if(class == TENSE)
 	{
-		FILE* tmp = fopen("tmp.txt","w+");
-		for(i=0; i<(int)strlen(morpho_feature); i++)
-			fprintf(tmp,"%d", morpho_feature[i]); 
-		rewind(tmp);
-		fscanf(tmp, "%d", &tmp_code);
 		size++;
-		real_class[size] = associate_number_to_classes(code_class,tmp_code);		
-		fclose(tmp);
-		remove("tmp.txt");
+		real_class[size] = associate_number_to_classes(code_class,class,morpho_feature,0);	
 	}
 	else
 	{
-		for(i=0; i<(int)strlen(morpho_feature);i++)
+		for(i=0; i<(int)strlen(morpho_feature);i++) //do not parcour the array if it's the tense !!
 		{
 			size++;
-			tmp_code = morpho_feature[i];
-			real_class[size] = associate_number_to_classes(code_class,tmp_code);		
+			real_class[size] = associate_number_to_classes(code_class,class,morpho_feature,i);
 		}
-	}	
+	}
 	return size;
 }