diff --git a/unit_tests/fugue/applywarp/feedsRun b/unit_tests/fugue/applywarp/feedsRun
index f99073504e0218ef3dd5b5616c910438a57127a6..ce3e00b91b8d8d10f58f49817d2c960208b3dff8 100755
--- a/unit_tests/fugue/applywarp/feedsRun
+++ b/unit_tests/fugue/applywarp/feedsRun
@@ -3,26 +3,32 @@
 import                             os
 import                             shlex
 import                             sys
+import os.path              as     op
 import subprocess           as     sp
 import numpy                as     np
 import nibabel              as     nib
-from   fsl.data.image       import Image
+from   pathlib              import Path
+from   fsl.data.image       import Image, addExt
 import fsl.transform.affine as     affine
+from   fsl.wrappers         import applywarp, LOAD
+from   pyfeeds              import evalImage
 
 
-def applywarp(src, ref):
-    cmd = f'applywarp --in={src} --ref={ref} --usesqform --out=out'
-    sp.run(shlex.split(cmd), check=True)
-    return Image('out')
+SCRIPT_DIR = Path(op.abspath(op.dirname(__file__)))
 
 
-def make_image(fname, data, sform, sform_code, qform, qform_code):
-    hdr = nib.Nifti1Header()
-    hdr.set_sform(sform, sform_code)
-    hdr.set_qform(qform, qform_code)
-    img = Image(data, header=hdr)
-    img.save(fname)
-    return img
+#! fsl/warpfns!8 (commit 65329a37d0830d4453381579408c3bbfa5a3bed6)
+#
+# Make sure that regions outside of the FOV
+# in the input image are extrapolated correctly
+def test_applywarp_normal_usage():
+    src    = Path(os.environ['FSLDIR']) / 'data' / 'standard' / 'MNI152_T1_2mm'
+    ref    = SCRIPT_DIR / 'roi_ref'
+    warp   = SCRIPT_DIR / 'roi_warp'
+    expect = addExt(SCRIPT_DIR / 'roi_out')
+    applywarp(src, ref, 'roi_got', warp=warp)
+    assert np.isclose(evalImage(expect, addExt('roi_got')), 0)
+
 
 # fsl/fugue!6
 #
@@ -37,6 +43,14 @@ def make_image(fname, data, sform, sform_code, qform, qform_code):
 #     diagonal
 def test_applywarp_uses_sqform_correctly():
 
+    def make_image(fname, data, sform, sform_code, qform, qform_code):
+        hdr = nib.Nifti1Header()
+        hdr.set_sform(sform, sform_code)
+        hdr.set_qform(qform, qform_code)
+        img = Image(data, header=hdr)
+        img.save(fname)
+        return img
+
     srcdata = np.zeros((20, 20, 20))
     refdata = np.zeros((20, 20, 20))
 
@@ -52,32 +66,33 @@ def test_applywarp_uses_sqform_correctly():
     refaff = affine.scaleOffsetXform(1, [-5, -5, -5])
 
     # aligned via sform
-    src    = make_image('src', srcdata, srcaff, 2, eye, 1)
-    ref    = make_image('ref', refdata, refaff, 2, eye, 1)
-    result = applywarp('src', 'ref')
-    assert np.all(np.isclose(result.data, ref.data))
+    src = make_image('src', srcdata, srcaff, 2, eye, 1)
+    ref = make_image('ref', refdata, refaff, 2, eye, 1)
+    applywarp('src', 'ref', 'out', usesqform=True)
+    assert np.isclose(evalImage(addExt('out'), addExt('ref')), 0)
 
     # aligned via sform again
-    src    = make_image('src', srcdata, srcaff, 2, eye, 0)
-    ref    = make_image('ref', refdata, refaff, 2, eye, 0)
-    result = applywarp('src', 'ref')
-    assert np.all(np.isclose(result.data, ref.data))
+    src = make_image('src', srcdata, srcaff, 2, eye, 0)
+    ref = make_image('ref', refdata, refaff, 2, eye, 0)
+    applywarp('src', 'ref', 'out', usesqform=True)
+    assert np.isclose(evalImage(addExt('out'), addExt('ref')), 0)
 
     # aligned via qform
-    src    = make_image('src', srcdata, eye, 0, srcaff, 2)
-    ref    = make_image('ref', refdata, eye, 0, refaff, 2)
-    result = applywarp('src', 'ref')
-    assert np.all(np.isclose(result.data, ref.data))
+    src = make_image('src', srcdata, eye, 0, srcaff, 2)
+    ref = make_image('ref', refdata, eye, 0, refaff, 2)
+    applywarp('src', 'ref', 'out', usesqform=True)
+    assert np.isclose(evalImage(addExt('out'), addExt('ref')), 0)
 
     # not aligned - should result in a scaling
     # matrix being used (an identify matrix here)
-    src    = make_image('src', srcdata, eye, 0, srcaff, 0)
-    ref    = make_image('ref', refdata, eye, 0, refaff, 0)
-    result = applywarp('src', 'ref')
-    assert not np.all(np.isclose(result.data, ref.data))
-    assert     np.all(np.isclose(result.data, src.data))
+    src = make_image('src', srcdata, eye, 0, srcaff, 0)
+    ref = make_image('ref', refdata, eye, 0, refaff, 0)
+    applywarp('src', 'ref', 'out', usesqform=True)
+    assert not np.isclose(evalImage(addExt('out'), addExt('ref')), 0)
+    assert np.isclose(evalImage(addExt('out'), addExt('src')), 0)
 
 
 if __name__ == '__main__':
     os.chdir(sys.argv[1])
+    test_applywarp_normal_usage()
     test_applywarp_uses_sqform_correctly()
diff --git a/unit_tests/fugue/applywarp/roi_out.nii.gz b/unit_tests/fugue/applywarp/roi_out.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..8b3e8e9b821830e38109b775a307698627d01497
--- /dev/null
+++ b/unit_tests/fugue/applywarp/roi_out.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74535c5db3c9fb980b32a58770c49d8d05e8a48b410fdde761bb3b6209c074eb
+size 4280
diff --git a/unit_tests/fugue/applywarp/roi_ref.nii.gz b/unit_tests/fugue/applywarp/roi_ref.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..432a2a18cf4dcbd13908991afed24393e083958c
--- /dev/null
+++ b/unit_tests/fugue/applywarp/roi_ref.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:995186689c7be8b19629f0cfb4e1e8cb9dcfb4d516f37027c9b0b436d4217ed4
+size 11625
diff --git a/unit_tests/fugue/applywarp/roi_warp.nii.gz b/unit_tests/fugue/applywarp/roi_warp.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..3e0275c8be01fc62b9166c9f7547bef4e91eb668
--- /dev/null
+++ b/unit_tests/fugue/applywarp/roi_warp.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b293f7b02753de9bb6ce0404cb1c8b00d628952b2306e81153ec714e48b0306
+size 33852