diff --git a/src/calc.c b/src/calc.c
index 32d659d9d56ba32ae996bff51bd0e89d66782244..f08cc24d0b45d8322780c91a81a7b72985e87c86 100644
--- a/src/calc.c
+++ b/src/calc.c
@@ -61,7 +61,8 @@
 #endif
 
 
-int calc_delay;
+int  calc_delay;
+char calc_smfs;
 
 struct {
   char err;                /* 1/0, error or not */
@@ -223,7 +224,7 @@ int calc_item(struct dir *par, char *path, char *name) {
   if(exclude_match(tmp))
     d->flags |= FF_EXL;
 
-  if(sflags & SF_SMFS && stcalc.curdev != fs.st_dev)
+  if(calc_smfs && stcalc.curdev != fs.st_dev)
     d->flags |= FF_OTHFS;
 
   /* determine type of this item */
diff --git a/src/calc.h b/src/calc.h
index 745b165089dfd4f6d30ced56ebb8a4361ea8ad98..1c08c5521ee9482c5878448424ada93fbb420018 100644
--- a/src/calc.h
+++ b/src/calc.h
@@ -28,7 +28,8 @@
 
 #include "ncdu.h"
 
-extern int calc_delay;  /* minimum screen update interval when calculating, in ms */
+extern int  calc_delay; /* minimum screen update interval when calculating, in ms */
+extern char calc_smfs;  /* stay on the same filesystem */
 
 void calc_process(void);
 int  calc_key(int);
diff --git a/src/main.c b/src/main.c
index a9ba2dc87a2270d2971564ad3aedfc37dffed8ee..97239aaf146863c1c16ae0774d543ef143a350f0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -81,6 +81,7 @@ void argv_parse(int argc, char **argv, char *dir) {
   getcwd(dir, PATH_MAX);
   sflags = 0;
   calc_delay = 100;
+  calc_smfs = 0;
 
  /* read from commandline */
   for(i=1; i<argc; i++) {
@@ -104,7 +105,7 @@ void argv_parse(int argc, char **argv, char *dir) {
       len = strlen(argv[i]);
       for(j=1; j<len; j++)
         switch(argv[i][j]) {
-          case 'x': sflags |= SF_SMFS; break;
+          case 'x': calc_smfs = 1; break;
           case 'q': calc_delay = 2000;     break;
           case '?':
           case 'h':