diff --git a/cfg-mplayer.h b/cfg-mplayer.h
index 080b04bd63..8dfebd2a5d 100644
--- a/cfg-mplayer.h
+++ b/cfg-mplayer.h
@@ -381,7 +381,7 @@ const m_option_t common_opts[] = {
     {"frames", &play_n_frames_mf, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
 
     // seek to byte/seconds position
-    {"sb", &seek_to_byte, CONF_TYPE_POSITION, CONF_MIN, 0, 0, NULL},
+    {"sb", &seek_to_byte, CONF_TYPE_INT64, CONF_MIN, 0, 0, NULL},
     OPT_TIME("ss", seek_to_sec, 0),
 
     // start paused
@@ -678,7 +678,7 @@ const m_option_t mplayer_opts[]={
     OPT_STRING("vobsub", vobsub_name, 0),
     {"vobsubid", &vobsub_id, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
 
-    {"sstep", &step_sec, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
+    {"sstep", &step_sec, CONF_TYPE_DOUBLE, CONF_MIN, 0, 0, NULL},
 
     OPT_CHOICE("framedrop", frame_dropping, 0,
                ({"no", 0},
diff --git a/command.c b/command.c
index a68b8f3228..eab17a57d2 100644
--- a/command.c
+++ b/command.c
@@ -261,11 +261,11 @@ static int mp_property_stream_pos(m_option_t *prop, int action, void *arg,
         return M_PROPERTY_ERROR;
     switch (action) {
     case M_PROPERTY_GET:
-        *(off_t *) arg = stream_tell(stream);
+        *(int64_t *) arg = stream_tell(stream);
         return M_PROPERTY_OK;
     case M_PROPERTY_SET:
-        M_PROPERTY_CLAMP(prop, *(off_t *) arg);
-        stream_seek(stream, *(off_t *) arg);
+        M_PROPERTY_CLAMP(prop, *(int64_t *) arg);
+        stream_seek(stream, *(int64_t *) arg);
         return M_PROPERTY_OK;
     }
     return M_PROPERTY_NOT_IMPLEMENTED;
@@ -280,7 +280,7 @@ static int mp_property_stream_start(m_option_t *prop, int action,
         return M_PROPERTY_UNAVAILABLE;
     switch (action) {
     case M_PROPERTY_GET:
-        *(off_t *) arg = stream->start_pos;
+        *(int64_t *) arg = stream->start_pos;
         return M_PROPERTY_OK;
     }
     return M_PROPERTY_NOT_IMPLEMENTED;
@@ -295,7 +295,7 @@ static int mp_property_stream_end(m_option_t *prop, int action, void *arg,
         return M_PROPERTY_UNAVAILABLE;
     switch (action) {
     case M_PROPERTY_GET:
-        *(off_t *) arg = stream->end_pos;
+        *(int64_t *) arg = stream->end_pos;
         return M_PROPERTY_OK;
     }
     return M_PROPERTY_NOT_IMPLEMENTED;
@@ -310,7 +310,7 @@ static int mp_property_stream_length(m_option_t *prop, int action,
         return M_PROPERTY_UNAVAILABLE;
     switch (action) {
     case M_PROPERTY_GET:
-        *(off_t *) arg = stream->end_pos - stream->start_pos;
+        *(int64_t *) arg = stream->end_pos - stream->start_pos;
         return M_PROPERTY_OK;
     }
     return M_PROPERTY_NOT_IMPLEMENTED;
@@ -1650,13 +1650,13 @@ static const m_option_t mp_properties[] = {
       0, 0, 0, NULL },
     { "demuxer", mp_property_demuxer, CONF_TYPE_STRING,
       0, 0, 0, NULL },
-    { "stream-pos", mp_property_stream_pos, CONF_TYPE_POSITION,
+    { "stream-pos", mp_property_stream_pos, CONF_TYPE_INT64,
       M_OPT_MIN, 0, 0, NULL },
-    { "stream-start", mp_property_stream_start, CONF_TYPE_POSITION,
+    { "stream-start", mp_property_stream_start, CONF_TYPE_INT64,
       M_OPT_MIN, 0, 0, NULL },
-    { "stream-end", mp_property_stream_end, CONF_TYPE_POSITION,
+    { "stream-end", mp_property_stream_end, CONF_TYPE_INT64,
       M_OPT_MIN, 0, 0, NULL },
-    { "stream-length", mp_property_stream_length, CONF_TYPE_POSITION,
+    { "stream-length", mp_property_stream_length, CONF_TYPE_INT64,
       M_OPT_MIN, 0, 0, NULL },
     { "stream-time-pos", mp_property_stream_time_pos, CONF_TYPE_TIME,
       M_OPT_MIN, 0, 0, NULL },
@@ -2118,7 +2118,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
         void *arg = NULL;
         int r, i;
         double d;
-        off_t o;
+        int64_t o;
         cmd->args[0].v.s = translate_legacy_property(cmd, cmd->args[0].v.s);
         if (cmd->args[1].v.f) {
             m_option_t *prop;
@@ -2135,7 +2135,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
             else if (prop->type == CONF_TYPE_DOUBLE ||
                      prop->type == CONF_TYPE_TIME)
                 d = cmd->args[1].v.f, arg = &d;
-            else if (prop->type == CONF_TYPE_POSITION)
+            else if (prop->type == CONF_TYPE_INT64)
                 o = cmd->args[1].v.f, arg = &o;
             else
                 mp_msg(MSGT_CPLAYER, MSGL_WARN,
diff --git a/m_option.c b/m_option.c
index 2f8daa42de..015b8f8e20 100644
--- a/m_option.c
+++ b/m_option.c
@@ -423,35 +423,6 @@ const m_option_type_t m_option_type_float = {
     .copy  = copy_opt,
 };
 
-///////////// Position
-#undef VAL
-#define VAL(x) (*(off_t *)(x))
-
-static int parse_position(const m_option_t *opt, struct bstr name,
-                          struct bstr param, void *dst)
-{
-    long long tmp;
-    int r = parse_longlong(opt, name, param, &tmp);
-    if (r >= 0 && dst)
-        *(off_t *)dst = tmp;
-    return r;
-}
-
-static char *print_position(const m_option_t *opt, const void *val)
-{
-    return talloc_asprintf(NULL, "%"PRId64, (int64_t)VAL(val));
-}
-
-const m_option_type_t m_option_type_position = {
-    // Integer (off_t)
-    .name  = "Position",
-    .size  = sizeof(off_t),
-    .parse = parse_position,
-    .print = print_position,
-    .copy  = copy_opt,
-};
-
-
 ///////////// String
 
 #undef VAL
diff --git a/m_option.h b/m_option.h
index 57fdc33610..73752e7a56 100644
--- a/m_option.h
+++ b/m_option.h
@@ -43,7 +43,6 @@ extern const m_option_type_t m_option_type_float;
 extern const m_option_type_t m_option_type_double;
 extern const m_option_type_t m_option_type_string;
 extern const m_option_type_t m_option_type_string_list;
-extern const m_option_type_t m_option_type_position;
 extern const m_option_type_t m_option_type_time;
 extern const m_option_type_t m_option_type_time_size;
 extern const m_option_type_t m_option_type_choice;
@@ -167,7 +166,6 @@ struct m_sub_options {
 #define CONF_TYPE_PRINT_FUNC    (&m_option_type_print_func)
 #define CONF_TYPE_SUBCONFIG     (&m_option_type_subconfig)
 #define CONF_TYPE_STRING_LIST   (&m_option_type_string_list)
-#define CONF_TYPE_POSITION      (&m_option_type_position)
 #define CONF_TYPE_IMGFMT        (&m_option_type_imgfmt)
 #define CONF_TYPE_AFMT          (&m_option_type_afmt)
 #define CONF_TYPE_SPAN          (&m_option_type_span)
diff --git a/mplayer.c b/mplayer.c
index c90812e871..376b243d58 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -204,8 +204,8 @@ static const char av_desync_help_text[] = _(
 static int drop_frame_cnt; // total number of dropped frames
 
 // seek:
-static off_t seek_to_byte;
-static off_t step_sec;
+static int64_t seek_to_byte;
+static double step_sec;
 
 static m_time_size_t end_at = { .type = END_AT_NONE, .pos = 0 };