patch 7.4.1779
Problem:    Using negative index in strcharpart(). (Yegappan Lakshmanan)
Solution:   Assume single byte when using a negative iindex.
diff --git a/src/eval.c b/src/eval.c
index 146348d..a3fe2a2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -19774,7 +19774,12 @@
 	    charlen = get_tv_number(&argvars[2]);
 	    while (charlen > 0 && nbyte + len < slen)
 	    {
-		len += mb_char2len(p[nbyte + len]);
+		int off = nbyte + len;
+
+		if (off < 0)
+		    len += 1;
+		else
+		    len += mb_char2len(p[off]);
 		--charlen;
 	    }
 	}