diff --git a/lib/sasacore/localSearch.ml b/lib/sasacore/localSearch.ml
index 133cb6154a0871a31a30f7ceefa85e5edc4947e4..6d0933ed393bb530a233a9f8361af46a89e13212 100644
--- a/lib/sasacore/localSearch.ml
+++ b/lib/sasacore/localSearch.ml
@@ -37,6 +37,7 @@ let (run : ('n, 'tv, 'v) t -> 'n option -> 'n sol) =
   let pre_process sol_opt (v, tv) n =
     if visited n v || cut sol_opt n then (v, tv) else (g.visiting n v, g.push tv n)
   in
+  Sys.catch_break true;
   let rec loop ps n tv v psol =
    let do_succ_cont s =
      if g.stop ps n then Stopped else loop2 n tv v s
@@ -54,7 +55,10 @@ let (run : ('n, 'tv, 'v) t -> 'n option -> 'n sol) =
     )
   in
   let n, tv, v = g.init in
-  loop n n tv v pre_sol
+  try loop n n tv v pre_sol
+  with Stdlib.Sys.Break ->
+    Printf.printf  "The search has been interrupted by CTRL-C\n%!";
+    Stopped
 
 let stat log =
   Printf.fprintf log "