diff --git a/src/if_py_both.h b/src/if_py_both.h
index b658ce3..777e7da 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -1521,6 +1521,25 @@
 }
 
     static int
+set_option_value_err(key, numval, stringval, opt_flags)
+    char_u	*key;
+    int		numval;
+    char_u	*stringval;
+    int		opt_flags;
+{
+    char_u	*errmsg;
+
+    if ((errmsg = set_option_value(key, numval, stringval, opt_flags)))
+    {
+	if (VimTryEnd())
+	    return FAIL;
+	PyErr_SetVim((char *)errmsg);
+	return FAIL;
+    }
+    return OK;
+}
+
+    static int
 set_option_value_for(key, numval, stringval, opt_flags, opt_type, from)
     char_u	*key;
     int		numval;
@@ -1532,6 +1551,7 @@
     win_T	*save_curwin = NULL;
     tabpage_T	*save_curtab = NULL;
     buf_T	*save_curbuf = NULL;
+    int		r = 0;
 
     VimTryStart();
     switch (opt_type)
@@ -1545,16 +1565,22 @@
 		PyErr_SetVim("Problem while switching windows.");
 		return -1;
 	    }
-	    set_option_value(key, numval, stringval, opt_flags);
+	    r = set_option_value_err(key, numval, stringval, opt_flags);
 	    restore_win(save_curwin, save_curtab);
+	    if (r == FAIL)
+		return -1;
 	    break;
 	case SREQ_BUF:
 	    switch_buffer(&save_curbuf, (buf_T *)from);
-	    set_option_value(key, numval, stringval, opt_flags);
+	    r = set_option_value_err(key, numval, stringval, opt_flags);
 	    restore_buffer(save_curbuf);
+	    if (r == FAIL)
+		return -1;
 	    break;
 	case SREQ_GLOBAL:
-	    set_option_value(key, numval, stringval, opt_flags);
+	    r = set_option_value_err(key, numval, stringval, opt_flags);
+	    if (r == FAIL)
+		return -1;
 	    break;
     }
     return VimTryEnd();
@@ -1611,6 +1637,7 @@
     if (flags & SOPT_BOOL)
     {
 	int	istrue = PyObject_IsTrue(valObject);
+
 	if (istrue == -1)
 	    return -1;
 	r = set_option_value_for(key, istrue, NULL,
diff --git a/src/option.c b/src/option.c
index 325f061..a9ee067 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3018,7 +3018,7 @@
 # define insecure_flag(opt_idx, opt_flags) (&options[opt_idx].flags)
 #endif
 static void set_string_option_global __ARGS((int opt_idx, char_u **varp));
-static void set_string_option __ARGS((int opt_idx, char_u *value, int opt_flags));
+static char_u *set_string_option __ARGS((int opt_idx, char_u *value, int opt_flags));
 static char_u *did_set_string_option __ARGS((int opt_idx, char_u **varp, int new_value_alloced, char_u *oldval, char_u *errbuf, int opt_flags));
 static char_u *set_chars_option __ARGS((char_u **varp));
 #ifdef FEAT_SYN_HL
@@ -5600,8 +5600,10 @@
 
 /*
  * Set a string option to a new value, and handle the effects.
+ *
+ * Returns NULL on success or error message on error.
  */
-    static void
+    static char_u *
 set_string_option(opt_idx, value, opt_flags)
     int		opt_idx;
     char_u	*value;
@@ -5610,9 +5612,10 @@
     char_u	*s;
     char_u	**varp;
     char_u	*oldval;
+    char_u	*r = NULL;
 
     if (options[opt_idx].var == NULL)	/* don't set hidden option */
-	return;
+	return NULL;
 
     s = vim_strsave(value);
     if (s != NULL)
@@ -5624,10 +5627,11 @@
 		    : opt_flags);
 	oldval = *varp;
 	*varp = s;
-	if (did_set_string_option(opt_idx, varp, TRUE, oldval, NULL,
-							   opt_flags) == NULL)
+	if ((r = did_set_string_option(opt_idx, varp, TRUE, oldval, NULL,
+							   opt_flags)) == NULL)
 	    did_set_option(opt_idx, opt_flags, TRUE);
     }
+    return r;
 }
 
 /*
@@ -8969,8 +8973,10 @@
 /*
  * Set the value of option "name".
  * Use "string" for string options, use "number" for other options.
+ *
+ * Returns NULL on success or error message on error.
  */
-    void
+    char_u *
 set_option_value(name, number, string, opt_flags)
     char_u	*name;
     long	number;
@@ -8992,11 +8998,11 @@
 	if (sandbox > 0 && (flags & P_SECURE))
 	{
 	    EMSG(_(e_sandbox));
-	    return;
+	    return NULL;
 	}
 #endif
 	if (flags & P_STRING)
-	    set_string_option(opt_idx, string, opt_flags);
+	    return set_string_option(opt_idx, string, opt_flags);
 	else
 	{
 	    varp = get_varp_scope(&(options[opt_idx]), opt_flags);
@@ -9017,19 +9023,20 @@
 			 * num option using a string. */
 			EMSG3(_("E521: Number required: &%s = '%s'"),
 								name, string);
-			return;     /* do nothing as we hit an error */
+			return NULL;     /* do nothing as we hit an error */
 
 		    }
 		}
 		if (flags & P_NUM)
-		    (void)set_num_option(opt_idx, varp, number,
+		    return set_num_option(opt_idx, varp, number,
 							  NULL, 0, opt_flags);
 		else
-		    (void)set_bool_option(opt_idx, varp, (int)number,
+		    return set_bool_option(opt_idx, varp, (int)number,
 								   opt_flags);
 	    }
 	}
     }
+    return NULL;
 }
 
 /*
diff --git a/src/proto/option.pro b/src/proto/option.pro
index 681fa45..853a342 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -23,7 +23,7 @@
 char_u *check_stl_option __ARGS((char_u *s));
 int get_option_value __ARGS((char_u *name, long *numval, char_u **stringval, int opt_flags));
 int get_option_value_strict __ARGS((char_u *name, long *numval, char_u **stringval, int opt_type, void *from));
-void set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags));
+char_u *set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags));
 char_u *get_term_code __ARGS((char_u *tname));
 char_u *get_highlight_default __ARGS((void));
 char_u *get_encoding_default __ARGS((void));
diff --git a/src/testdir/test86.ok b/src/testdir/test86.ok
index d64fa7c..bc01816 100644
--- a/src/testdir/test86.ok
+++ b/src/testdir/test86.ok
@@ -166,6 +166,7 @@
   inv: -100! KeyError
   gopts1! KeyError
   p/wopts1: 8
+  inv: -100! error
   p/bopts1! KeyError
   inv: -100! KeyError
   bopts1! KeyError
@@ -184,6 +185,7 @@
   inv: 'abc'! KeyError
   gopts1! KeyError
   p/wopts1: ''
+  inv: 'abc'! error
   p/bopts1! KeyError
   inv: 'abc'! KeyError
   bopts1! KeyError
diff --git a/src/testdir/test87.ok b/src/testdir/test87.ok
index 77548d5..fa663fb 100644
--- a/src/testdir/test87.ok
+++ b/src/testdir/test87.ok
@@ -155,6 +155,7 @@
   inv: -100! KeyError
   gopts1! KeyError
   p/wopts1: 8
+  inv: -100! error
   p/bopts1! KeyError
   inv: -100! KeyError
   bopts1! KeyError
@@ -173,6 +174,7 @@
   inv: 'abc'! KeyError
   gopts1! KeyError
   p/wopts1: b''
+  inv: 'abc'! error
   p/bopts1! KeyError
   inv: 'abc'! KeyError
   bopts1! KeyError
diff --git a/src/version.c b/src/version.c
index b3c3bff..974f5f8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1004,
+/**/
     1003,
 /**/
     1002,
