diff --git a/tests/Makefile b/tests/Makefile
index 444c09b3de..c7892a9313 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -23,7 +23,7 @@ FFMPEG=ffmpeg$(PROGSSUF)$(EXESUF)
 $(AREF): CMP=
 
 APITESTSDIR := tests/api
-FATE_OUTDIRS = tests/data tests/data/fate tests/data/filtergraphs tests/data/lavf tests/data/lavf-fate tests/data/pixfmt tests/vsynth1 $(APITESTSDIR)
+FATE_OUTDIRS = tests/data tests/data/fate tests/data/filtergraphs tests/data/maps tests/data/lavf tests/data/lavf-fate tests/data/pixfmt tests/vsynth1 $(APITESTSDIR)
 OUTDIRS += $(FATE_OUTDIRS)
 
 $(VREF): tests/videogen$(HOSTEXESUF) | tests/vsynth1
@@ -66,6 +66,10 @@ tests/data/filtergraphs/%: TAG = COPY
 tests/data/filtergraphs/%: $(SRC_PATH)/tests/filtergraphs/% | tests/data/filtergraphs
 	$(M)cp $< $@
 
+tests/data/maps/%: TAG = COPY
+tests/data/maps/%: $(SRC_PATH)/tests/maps/% | tests/data/maps
+	$(M)cp $< $@
+
 RUNNING_FATE := $(filter check fate%,$(filter-out fate-rsync,$(MAKECMDGOALS)))
 
 # Check sanity of dependencies when running FATE tests.
diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index e4bdf59db9..e5af5bf7a5 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -395,6 +395,14 @@ FATE_FILTER_SAMPLES-$(call FILTERDEMDEC, FPS SCALE, MOV, QTRLE) += fate-filter-f
 fate-filter-fps-cfr: CMD = framecrc -auto_conversion_filters -i $(TARGET_SAMPLES)/qtrle/apple-animation-variable-fps-bug.mov -r 30 -fps_mode cfr -pix_fmt yuv420p
 fate-filter-fps:     CMD = framecrc -auto_conversion_filters -i $(TARGET_SAMPLES)/qtrle/apple-animation-variable-fps-bug.mov -vf fps=30 -pix_fmt yuv420p
 
+FATE_FILTER_SAMPLES-$(call FILTERFRAMECRC, TESTSRC2 FSYNC, FILE_PROTOCOL) += fate-filter-fsync-up fate-filter-fsync-down
+fate-filter-fsync-up: tests/data/filtergraphs/fsync-up
+fate-filter-fsync-up: tests/data/maps/fsync-up
+fate-filter-fsync-up: CMD = framecrc -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/fsync-up
+fate-filter-fsync-down: tests/data/filtergraphs/fsync-down
+fate-filter-fsync-down: tests/data/maps/fsync-down
+fate-filter-fsync-down: CMD = framecrc -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/fsync-down
+
 FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE := $(addprefix fate-filter-alphaextract_alphamerge_, rgb yuv)
 FATE_FILTER_VSYNTH_PGMYUV-$(call ALLYES, SCALE_FILTER FORMAT_FILTER SPLIT_FILTER ALPHAEXTRACT_FILTER ALPHAMERGE_FILTER) += $(FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE)
 $(FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE): fate-filter-alphaextract_alphamerge_%: tests/data/filtergraphs/alphamerge_alphaextract_%
diff --git a/tests/filtergraphs/fsync-down b/tests/filtergraphs/fsync-down
new file mode 100644
index 0000000000..56df6a6d52
--- /dev/null
+++ b/tests/filtergraphs/fsync-down
@@ -0,0 +1,2 @@
+testsrc2=r=25:d=1 [ref];
+[ref] fsync=f=tests/data/maps/fsync-down:fmt={ptsi} {tbi} {pts} {tb}
diff --git a/tests/filtergraphs/fsync-up b/tests/filtergraphs/fsync-up
new file mode 100644
index 0000000000..e7a5c37728
--- /dev/null
+++ b/tests/filtergraphs/fsync-up
@@ -0,0 +1,2 @@
+testsrc2=r=25:d=1 [ref];
+[ref] fsync=f=tests/data/maps/fsync-up:fmt={pts} {tb} {ptsi} {tbi}
diff --git a/tests/maps/fsync-down b/tests/maps/fsync-down
new file mode 100644
index 0000000000..536a993dd0
--- /dev/null
+++ b/tests/maps/fsync-down
@@ -0,0 +1,7 @@
+1 1/25 0 1/7
+5 1/25 1 1/7
+8 1/25 2 1/7
+12 1/25 3 1/7
+16 1/25 4 1/7
+19 1/25 5 1/7
+23 1/25 6 1/7
diff --git a/tests/maps/fsync-up b/tests/maps/fsync-up
new file mode 100644
index 0000000000..7748b362e7
--- /dev/null
+++ b/tests/maps/fsync-up
@@ -0,0 +1,57 @@
+0 1/57 0 1/25
+1 1/57 0 1/25
+2 1/57 1 1/25
+3 1/57 1 1/25
+4 1/57 1 1/25
+5 1/57 2 1/25
+6 1/57 2 1/25
+7 1/57 3 1/25
+8 1/57 3 1/25
+9 1/57 4 1/25
+10 1/57 4 1/25
+11 1/57 5 1/25
+12 1/57 5 1/25
+13 1/57 5 1/25
+14 1/57 6 1/25
+15 1/57 6 1/25
+16 1/57 7 1/25
+17 1/57 7 1/25
+18 1/57 8 1/25
+19 1/57 8 1/25
+20 1/57 8 1/25
+21 1/57 9 1/25
+22 1/57 9 1/25
+23 1/57 10 1/25
+24 1/57 10 1/25
+25 1/57 11 1/25
+26 1/57 11 1/25
+27 1/57 12 1/25
+28 1/57 12 1/25
+29 1/57 12 1/25
+30 1/57 13 1/25
+31 1/57 13 1/25
+32 1/57 14 1/25
+33 1/57 14 1/25
+34 1/57 15 1/25
+35 1/57 15 1/25
+36 1/57 16 1/25
+37 1/57 16 1/25
+38 1/57 16 1/25
+39 1/57 17 1/25
+40 1/57 17 1/25
+41 1/57 18 1/25
+42 1/57 18 1/25
+43 1/57 19 1/25
+44 1/57 19 1/25
+45 1/57 19 1/25
+46 1/57 20 1/25
+47 1/57 20 1/25
+48 1/57 21 1/25
+49 1/57 21 1/25
+50 1/57 22 1/25
+51 1/57 22 1/25
+52 1/57 23 1/25
+53 1/57 23 1/25
+54 1/57 23 1/25
+55 1/57 24 1/25
+56 1/57 24 1/25
diff --git a/tests/ref/fate/filter-fsync-down b/tests/ref/fate/filter-fsync-down
new file mode 100644
index 0000000000..d3f04060ad
--- /dev/null
+++ b/tests/ref/fate/filter-fsync-down
@@ -0,0 +1,12 @@
+#tb 0: 1/7
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 320x240
+#sar 0: 1/1
+0,          0,          0,        1,   115200, 0x7ed43658
+0,          1,          1,        1,   115200, 0x5418f45b
+0,          2,          2,        1,   115200, 0x9872fad9
+0,          3,          3,        1,   115200, 0x4dbbf2e0
+0,          4,          4,        1,   115200, 0xcce711f5
+0,          5,          5,        1,   115200, 0xaa341025
+0,          6,          6,        1,   115200, 0xb41eeaac
diff --git a/tests/ref/fate/filter-fsync-up b/tests/ref/fate/filter-fsync-up
new file mode 100644
index 0000000000..ea7f7efe2d
--- /dev/null
+++ b/tests/ref/fate/filter-fsync-up
@@ -0,0 +1,62 @@
+#tb 0: 1/57
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 320x240
+#sar 0: 1/1
+0,          0,          0,        1,   115200, 0xeba70ff3
+0,          1,          1,        1,   115200, 0xeba70ff3
+0,          2,          2,        1,   115200, 0x7ed43658
+0,          3,          3,        1,   115200, 0x7ed43658
+0,          4,          4,        1,   115200, 0x7ed43658
+0,          5,          5,        1,   115200, 0x8cd87e03
+0,          6,          6,        1,   115200, 0x8cd87e03
+0,          7,          7,        1,   115200, 0xbb1ca0c4
+0,          8,          8,        1,   115200, 0xbb1ca0c4
+0,          9,          9,        1,   115200, 0x5fdfd474
+0,         10,         10,        1,   115200, 0x5fdfd474
+0,         11,         11,        1,   115200, 0x5418f45b
+0,         12,         12,        1,   115200, 0x5418f45b
+0,         13,         13,        1,   115200, 0x5418f45b
+0,         14,         14,        1,   115200, 0xb16cf929
+0,         15,         15,        1,   115200, 0xb16cf929
+0,         16,         16,        1,   115200, 0xe1f7f824
+0,         17,         17,        1,   115200, 0xe1f7f824
+0,         18,         18,        1,   115200, 0x9872fad9
+0,         19,         19,        1,   115200, 0x9872fad9
+0,         20,         20,        1,   115200, 0x9872fad9
+0,         21,         21,        1,   115200, 0x02a4f220
+0,         22,         22,        1,   115200, 0x02a4f220
+0,         23,         23,        1,   115200, 0x9ae2fcc9
+0,         24,         24,        1,   115200, 0x9ae2fcc9
+0,         25,         25,        1,   115200, 0x9b56f029
+0,         26,         26,        1,   115200, 0x9b56f029
+0,         27,         27,        1,   115200, 0x4dbbf2e0
+0,         28,         28,        1,   115200, 0x4dbbf2e0
+0,         29,         29,        1,   115200, 0x4dbbf2e0
+0,         30,         30,        1,   115200, 0x1953f828
+0,         31,         31,        1,   115200, 0x1953f828
+0,         32,         32,        1,   115200, 0xc42403b8
+0,         33,         33,        1,   115200, 0xc42403b8
+0,         34,         34,        1,   115200, 0xeb4615f6
+0,         35,         35,        1,   115200, 0xeb4615f6
+0,         36,         36,        1,   115200, 0xcce711f5
+0,         37,         37,        1,   115200, 0xcce711f5
+0,         38,         38,        1,   115200, 0xcce711f5
+0,         39,         39,        1,   115200, 0x297b12cf
+0,         40,         40,        1,   115200, 0x297b12cf
+0,         41,         41,        1,   115200, 0x625f10e9
+0,         42,         42,        1,   115200, 0x625f10e9
+0,         43,         43,        1,   115200, 0xaa341025
+0,         44,         44,        1,   115200, 0xaa341025
+0,         45,         45,        1,   115200, 0xaa341025
+0,         46,         46,        1,   115200, 0x139821b1
+0,         47,         47,        1,   115200, 0x139821b1
+0,         48,         48,        1,   115200, 0x1e7e09a0
+0,         49,         49,        1,   115200, 0x1e7e09a0
+0,         50,         50,        1,   115200, 0xa7d80776
+0,         51,         51,        1,   115200, 0xa7d80776
+0,         52,         52,        1,   115200, 0xb41eeaac
+0,         53,         53,        1,   115200, 0xb41eeaac
+0,         54,         54,        1,   115200, 0xb41eeaac
+0,         55,         55,        1,   115200, 0xe00dd55d
+0,         56,         56,        1,   115200, 0xe00dd55d
