diff --git a/src/main_lustre_testgen.ml b/src/main_lustre_testgen.ml
index ab5e68749258b01b7ac5ec9ffbbd3d232298c69b..85b4feac13d33d740bfbaa861fb88719036caeee 100644
--- a/src/main_lustre_testgen.ml
+++ b/src/main_lustre_testgen.ml
@@ -70,13 +70,14 @@ let testgen_source dirname basename extension =
     (* if List.mem !cpt [238;371;601;799;875;998] then *)
     (*   Format.eprintf "Mutant %i: %a -> %a" !cpt Printers.pp_expr orig_e Printers.pp_expr new_e  *)
     (* ; *)
-    incr cpt;
-    let mutant_filename = 
-      match !Options.dest_dir with
-      | "" -> (* Mutants are generated in source directory *)
-	 basename^ ".mutant.n" ^ (string_of_int !cpt) ^ extension 
+      incr cpt;
+      let mutant_basename = (Filename.basename basename)^ ".mutant.n" ^ (string_of_int !cpt) ^ extension  in
+      let mutant_filename = 
+	match !Options.dest_dir with
+	| "" -> (* Mutants are generated in source directory *)
+	   basename^ ".mutant.n" ^ (string_of_int !cpt) ^ extension 
       | dir ->  (* Mutants are generated in target directory *)
-	 dir ^ "/" ^ (Filename.basename basename)^ ".mutant.n" ^ (string_of_int !cpt) ^ extension 
+	 dir ^ "/" ^ mutant_basename 
     in
     let mutant_out = (
       try 
@@ -91,7 +92,7 @@ let testgen_source dirname basename extension =
       Mutation.print_directive mutation
     );
     Format.fprintf mutant_fmt "%a@." Printers.pp_prog mutant;
-    mutation, mutation_loc, mutant_filename
+    mutation, mutation_loc, mutant_basename
     )
       mutants
   in
@@ -99,8 +100,11 @@ let testgen_source dirname basename extension =
   
   (* Printing traceability *)
   let trace_filename = 
-       (* Mutant report is generated in source directory *)
-    basename^ ".mutation.json" 
+    match !Options.dest_dir with
+    | "" -> (* Mutant report is generated in source directory *)
+       basename^ ".mutation.json" 
+    | dir ->  (* Mutants are generated in target directory *)
+       dir ^ "/" ^ (Filename.basename basename)^ ".mutation.json"
   in
   pp_trace trace_filename mutation_list;
   (* We stop the process here *)