diff --git a/src/libraries/project/state_builder.ml b/src/libraries/project/state_builder.ml
index 519505130bd580bf084dd7da1794cb95d391c33a..231dae0d4a6f80b181125d185a98c0fdcafb40be 100644
--- a/src/libraries/project/state_builder.ml
+++ b/src/libraries/project/state_builder.ml
@@ -814,6 +814,7 @@ module Hashconsing_tbl =
 module type Counter = sig
   val next : unit -> int
   val get: unit -> int
+  val reset: unit -> unit
   val self: State.t
 end
 
@@ -849,6 +850,7 @@ module SharedCounter(Info : sig val name : string end) = struct
 
   let next () = incr cpt ; !cpt
   let get () = !cpt
+  let reset () = cpt := 0
   let self = Cpt.self
 
 end
@@ -886,6 +888,7 @@ module Counter(Info : sig val name : string end) = struct
 
   let next () = incr !cpt ; !(!cpt)
   let get () = !(!cpt)
+  let reset () = !cpt := 0
   let self = Cpt.self
 
 end
diff --git a/src/libraries/project/state_builder.mli b/src/libraries/project/state_builder.mli
index f4770180a8efd00c05ccd310951dc0f511cde48d..10bbb9e968622ebbe64792f4f2c0d4ad083688c9 100644
--- a/src/libraries/project/state_builder.mli
+++ b/src/libraries/project/state_builder.mli
@@ -507,6 +507,10 @@ module type Counter = sig
   (** @return the current value of the counter, without incrementing it.
       @since Fluorine-20130401 *)
 
+  (** Resets the counter to 0.
+      @since Frama-C+dev *)
+  val reset: unit -> unit
+
   val self: State.t
   (** @since Oxygen-20120901 *)