This is not just a problem with text. It is a more general problem with lists.
A small change to the original script yields this ...
property testList : characters of "abcdefghijklmnopqrstuvwxyz" -- a list of characters
-- test 1
set n to (-10 as integer)
items 1 thru n of testList --> {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"}
-- test 2
(10 as integer)
items 1 thru -(the result) of testList --> {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"}
-- test 3
(-10 as integer)
items 1 thru (get the result) of testList --> {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"}
-- test 4
(-10 as integer)
items 1 thru (the result) of testList --> Can’t get 1 {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} thru -10 of item.
It has exactly the same problem.