diff --git a/src/eval.c b/src/eval.c
index cc23de4..3db58f8 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3461,7 +3461,7 @@
     int		doesrange;
     int		failed = FALSE;
     funcdict_T	fudi;
-    partial_T	*partial;
+    partial_T	*partial = NULL;
 
     if (eap->skip)
     {
@@ -3497,12 +3497,6 @@
     name = deref_func_name(tofree, &len,
 				    partial != NULL ? NULL : &partial, FALSE);
 
-    /* When calling fdict.func(), where "func" is a partial, use "fdict"
-     * instead of the dict in the partial, for backwards compatibility.
-     * TODO: Do use the arguments in the partial? */
-    if (fudi.fd_dict != NULL)
-	partial = NULL;
-
     /* Skip white space to allow ":call func ()".  Not good, but required for
      * backward compatibility. */
     startarg = skipwhite(arg);
@@ -21734,17 +21728,18 @@
 	}
     }
 
-    if (rettv->v_type == VAR_FUNC && selfdict != NULL)
+    if ((rettv->v_type == VAR_FUNC || rettv->v_type == VAR_PARTIAL)
+							  && selfdict != NULL)
     {
-	char_u	    *fname;
+	char_u	    *fname = rettv->v_type == VAR_FUNC ? rettv->vval.v_string
+					     : rettv->vval.v_partial->pt_name;
 	char_u	    *tofree = NULL;
 	ufunc_T	    *fp;
 	char_u	    fname_buf[FLEN_FIXED + 1];
 	int	    error;
 
 	/* Translate "s:func" to the stored function name. */
-	fname = fname_trans_sid(rettv->vval.v_string, fname_buf,
-							     &tofree, &error);
+	fname = fname_trans_sid(fname, fname_buf, &tofree, &error);
 	fp = find_func(fname);
 	vim_free(tofree);
 
@@ -21758,7 +21753,34 @@
 		pt->pt_refcount = 1;
 		pt->pt_dict = selfdict;
 		selfdict = NULL;
-		pt->pt_name = rettv->vval.v_string;
+		if (rettv->v_type == VAR_FUNC)
+		{
+		    /* just a function: use selfdict */
+		    pt->pt_name = rettv->vval.v_string;
+		}
+		else
+		{
+		    partial_T	*ret_pt = rettv->vval.v_partial;
+		    int		i;
+
+		    /* partial: use selfdict and copy args */
+		    pt->pt_name = vim_strsave(ret_pt->pt_name);
+		    if (ret_pt->pt_argc > 0)
+		    {
+			pt->pt_argv = (typval_T *)alloc(
+					  sizeof(typval_T) * ret_pt->pt_argc);
+			if (pt->pt_argv == NULL)
+			    /* out of memory: drop the arguments */
+			    pt->pt_argc = 0;
+			else
+			{
+			    pt->pt_argc = ret_pt->pt_argc;
+			    for (i = 0; i < pt->pt_argc; i++)
+				copy_tv(&ret_pt->pt_argv[i], &pt->pt_argv[i]);
+			}
+		    }
+		    partial_unref(ret_pt);
+		}
 		func_ref(pt->pt_name);
 		rettv->v_type = VAR_PARTIAL;
 		rettv->vval.v_partial = pt;
@@ -23915,6 +23937,8 @@
 	{
 	    name = vim_strsave(lv.ll_tv->vval.v_partial->pt_name);
 	    *pp = end;
+	    if (partial != NULL)
+		*partial = lv.ll_tv->vval.v_partial;
 	}
 	else
 	{
