diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index e7613af7ee..3c61e192ed 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -216,6 +216,7 @@ typedef struct AVInputFormat {
      * @param stream_index must not be -1
      * @param flags selects which direction should be preferred if no exact
      *              match is available
+     * @return >= 0 on success (but not necessarily the new offset)
      */
     int (*read_seek)(struct AVFormatContext *,
                      int stream_index, int64_t timestamp, int flags);
diff --git a/libavformat/dv.c b/libavformat/dv.c
index 10a3062601..e459ed9742 100644
--- a/libavformat/dv.c
+++ b/libavformat/dv.c
@@ -426,7 +426,8 @@ static int dv_read_seek(AVFormatContext *s, int stream_index,
 
     dv_offset_reset(c, offset / c->sys->frame_size);
 
-    return url_fseek(&s->pb, offset, SEEK_SET);
+    offset = url_fseek(&s->pb, offset, SEEK_SET);
+    return (offset < 0)?offset:0;
 }
 
 static int dv_read_close(AVFormatContext *s)