diff --git a/dev/package.development.R b/dev/package.development.R
index 3043176bab4d6c449e4ce6f99ba78cd28c822626..76538e630489e2f54441d0ff5f529b242487e1e5 100644
--- a/dev/package.development.R
+++ b/dev/package.development.R
@@ -10,11 +10,11 @@ devtools::build_vignettes(package)
 ### Checks
 if (FALSE) {
     {
-        system("rm so.ii/data-raw/data-common")
-        system("mv ~/.Rprofile ~/.Rprofile-temp")
+        # system("rm so.ii/data-raw/data-common")
+        # system("mv ~/.Rprofile ~/.Rprofile-temp")
         devtools::check(package)
-        system("mv ~/.Rprofile-temp ~/.Rprofile")
-        system("cp -r data-common so.ii/data-raw")
+        # system("mv ~/.Rprofile-temp ~/.Rprofile")
+        # system("cp -r data-common so.ii/data-raw")
     }
 }
 
diff --git a/dev/tag-message b/dev/tag-message
index da25973d44ef238d8cb97f5c6f276532d4dea28d..2e0bd93d6bcd609f19d21a4546fbf2f61a2689bc 100644
--- a/dev/tag-message
+++ b/dev/tag-message
@@ -1,16 +1,18 @@
-so.ii Version: 1.0.24.0
+so.ii Version: 1.0.25.0
 
 0 errors ✔ | 0 warnings ✔ | 0 notes ✔
 
 **Note de version**
     * modification de map_so_ii
+    * nouvelle fonction interne adjust_terra_scale
 
 **Détails**
-    * map_so_ii charge dorénavant sf si besoin, modifie le parmètre sf_use_s2 à
-    FALSE (de façon momentanée). Il gère aussi le format de dataset. Il cherche
-    à le transformer en objet de classe sfc, s'il n'y arrive pas il renvoie un
-    warning et n'affiche pas dataset.
+    * La librairie terra a changé sa façon de faire la barre d'échelle avec
+    sbar à partir de la version 1.7, de façon incompatible avec l'usage interne.
+    Une nouvelle fonction non exportée adjust_terra_scale est créé pour ne plus
+    dépendre des fonctionnalités de terra::sbar qui posent problème, lorsque
+    les cartes sont en "lonlat".
 
-# git tag -a v1.0.24.0 -F dev/tag-message
+# git tag -a v1.0.25.0 -F dev/tag-message
 # git push --tags
 
diff --git a/so.ii/DESCRIPTION b/so.ii/DESCRIPTION
index aee78c71fea435e827a7eb0647ac9de37b9a896f..cf26285db960a9ae1eab01d165b12ed3b93b7af6 100644
--- a/so.ii/DESCRIPTION
+++ b/so.ii/DESCRIPTION
@@ -1,6 +1,6 @@
 Package: so.ii
 Title: Utilities very useful to share within so_ii team
-Version: 1.0.24.0
+Version: 1.0.25.0
 Authors@R:
     c(
         person(given = "Frédéric",
@@ -28,8 +28,7 @@ Imports:
     rio,
     scales,
     sf,
-    terra,
-    units
+    terra
 Suggests: 
     rmarkdown,
     testthat
diff --git a/so.ii/R/adjust_terra_scale.R b/so.ii/R/adjust_terra_scale.R
new file mode 100644
index 0000000000000000000000000000000000000000..a749b0eb9933fcc2cc38c0337a10ed18e86f4263
--- /dev/null
+++ b/so.ii/R/adjust_terra_scale.R
@@ -0,0 +1,36 @@
+adjust_terra_scale = function(d = NULL, lonlat = TRUE) {
+    destpoint = function (p, d, b = 90, r = 6378137) {
+        toRad = pi/180
+        lon1 = p[, 1] * toRad
+        lat1 = p[, 2] * toRad
+        b = b * toRad
+        lat2 = asin(sin(lat1) * cos(d/r) + cos(lat1) * sin(d/r) * 
+            cos(b))
+        lon2 = lon1 + atan2(sin(b) * sin(d/r) * cos(lat1), cos(d/r) - 
+            sin(lat1) * sin(lat2))
+        lon2 = (lon2 + pi)%%(2 * pi) - pi
+        cbind(lon2, lat2)/toRad
+    }
+
+    graph_box = graphics::par()$usr
+    if (lonlat) {
+        lat = mean(graph_box[3:4])
+        if (is.null(d)) {
+            dx = (graph_box[2] - graph_box[1])/6
+            d = as.vector(terra::distance(cbind(0, lat), cbind(dx, 
+                lat), TRUE))
+            d = max(1, 5 * round(d/5000))
+        }
+        p = cbind(0, lat)
+        dd = destpoint(p, d * 1000)[1, 1]
+    }
+    else {
+        if (is.null(d)) {
+            d = (graph_box[2] - graph_box[1])/6
+            digits = floor(log10(d)) + 1
+            d = round(d, -(digits - 1))
+        }
+        dd = d
+    }
+    return(c(dd, d))
+}
diff --git a/so.ii/R/map_so_ii.r b/so.ii/R/map_so_ii.r
index 656fc2fbea90b00f1422a390dda132650c9fe54d..f0d1c11d772cf5fb9d4634f2f3d0db4fb939888a 100644
--- a/so.ii/R/map_so_ii.r
+++ b/so.ii/R/map_so_ii.r
@@ -289,23 +289,31 @@ map_so_ii = function(
     ## Plot bar
     if (bar == TRUE) {
         if (identical(scope, so.ii::so_ii_limit)) {
-            d = 10
+            # d = 10
+            d = adjust_terra_scale(10)
             xy = c(3.55, 43.47)
-            below = "km"
-            label = c(0, 5, 10)
+            adj = c(0.5, -1)
         } else {
-            area = sf::st_area(sf::st_as_sfc(sf::st_bbox(scope)))
-            d = max(pretty(units::set_units(sqrt(area) / 5, "km"))) 
+            # area = sf::st_area(sf::st_as_sfc(sf::st_bbox(scope)))
+            # d = max(pretty(units::set_units(sqrt(area) / 5, "km")))
+            d = adjust_terra_scale()
             xy = "bottomleft"
-            below = "km"
-            label = c(0, d/2, d)
+            # Magical adjustment when scope vary to have text readable
+            # 0.4788987 should correspond to longitude range for so.ii scope
+            adj = diff(graphics::par()$usr[3:4])
+            adj = c(
+                0.5,
+                -1 * exp(0.4788987 / adj - 1)^.024
+            )
         }
         terra::sbar(
-            d = d,
+            d = d[1],
             xy = xy,
             type = "bar",
-            below = below,
-            label = label,
+            below = "km",
+            label = c(0, d[2]/2, d[2]),
+            lonlat = FALSE,
+            adj = adj,
             cex = .8
         )
     }