Index: sasmodels/compare.py
===================================================================
--- sasmodels/compare.py	(revision bb39b4a56cfca3e54321e008ce4dfecbde90f716)
+++ sasmodels/compare.py	(revision 97d89aff093c26a2807b096119428334c0aa29e1)
@@ -493,8 +493,10 @@
     parameters = model_info.parameters
     magnetic = False
+    magnetic_pars = []
     for p in parameters.user_parameters(pars, is2d):
         if any(p.id.startswith(x) for x in ('M0:', 'mtheta:', 'mphi:')):
             continue
-        if p.id.startswith('up:') and not magnetic:
+        if p.id.startswith('up:'):
+            magnetic_pars.append("%s=%s"%(p.id, pars.get(p.id, p.default)))
             continue
         fields = dict(
@@ -511,4 +513,6 @@
         lines.append(_format_par(p.name, **fields))
         magnetic = magnetic or fields['M0'] != 0.
+    if magnetic and magnetic_pars:
+        lines.append(" ".join(magnetic_pars))
     return "\n".join(lines)
 
@@ -528,29 +532,57 @@
     return line
 
-def suppress_pd(pars):
+def suppress_pd(pars, suppress=True):
     # type: (ParameterSet) -> ParameterSet
     """
-    Suppress theta_pd for now until the normalization is resolved.
-
-    May also suppress complete polydispersity of the model to test
-    models more quickly.
+    If suppress is True complete eliminate polydispersity of the model to test
+    models more quickly.  If suppress is False, make sure at least one
+    parameter is polydisperse, setting the first polydispersity parameter to
+    15% if no polydispersity is given (with no explicit demo parameters given
+    in the model, there will be no default polydispersity).
     """
     pars = pars.copy()
-    for p in pars:
-        if p.endswith("_pd_n"):
-            pars[p] = 0
+    if suppress:
+        for p in pars:
+            if p.endswith("_pd_n"):
+                pars[p] = 0
+    else:
+        any_pd = False
+        first_pd = None
+        for p in pars:
+            if p.endswith("_pd_n"):
+                any_pd |= (pars[p] != 0 and pars[p[:-2]] != 0.)
+                if first_pd is None:
+                    first_pd = p
+        if not any_pd and first_pd is not None:
+            if pars[first_pd] == 0:
+                pars[first_pd] = 35
+            if pars[first_pd[:-2]] == 0:
+                pars[first_pd[:-2]] = 0.15
     return pars
 
-def suppress_magnetism(pars):
+def suppress_magnetism(pars, suppress=True):
     # type: (ParameterSet) -> ParameterSet
     """
-    Suppress theta_pd for now until the normalization is resolved.
-
-    May also suppress complete polydispersity of the model to test
-    models more quickly.
+    If suppress is True complete eliminate magnetism of the model to test
+    models more quickly.  If suppress is False, make sure at least one sld
+    parameter is magnetic, setting the first parameter to have a strong
+    magnetic sld (8/A^2) at 60 degrees (with no explicit demo parameters given
+    in the model, there will be no default magnetism).
     """
     pars = pars.copy()
-    for p in pars:
-        if p.startswith("M0:"): pars[p] = 0
+    if suppress:
+        for p in pars:
+            if p.startswith("M0:"):
+                pars[p] = 0
+    else:
+        any_mag = False
+        first_mag = None
+        for p in pars:
+            if p.startswith("M0:"):
+                any_mag |= (pars[p] != 0)
+                if first_mag is None:
+                    first_mag = p
+        if not any_mag and first_mag is not None:
+            pars[first_mag] = 8.
     return pars
 
@@ -876,5 +908,5 @@
 def plot_models(opts, result, limits=(np.Inf, -np.Inf), setnum=0):
     # type: (Dict[str, Any], Dict[str, Any], Optional[Tuple[float, float]]) -> Tuple[float, float]
-    base_value, comp_value= result['base_value'], result['comp_value']
+    base_value, comp_value = result['base_value'], result['comp_value']
     base_time, comp_time = result['base_time'], result['comp_time']
     resid, relerr = result['resid'], result['relerr']
@@ -1153,8 +1185,12 @@
         elif arg == '-edit':    opts['explore'] = True
         elif arg == '-demo':    opts['use_demo'] = True
-        elif arg == '-default':    opts['use_demo'] = False
+        elif arg == '-default': opts['use_demo'] = False
         elif arg == '-html':    opts['html'] = True
         elif arg == '-help':    opts['html'] = True
     # pylint: enable=bad-whitespace
+
+    # Magnetism forces 2D for now
+    if opts['magnetic']:
+        opts['is2d'] = True
 
     # Force random if more than one set
@@ -1241,10 +1277,8 @@
         constrain_pars(model_info, pars)
         constrain_pars(model_info2, pars2)
-    if opts['mono']:
-        pars = suppress_pd(pars)
-        pars2 = suppress_pd(pars2)
-    if not opts['magnetic']:
-        pars = suppress_magnetism(pars)
-        pars2 = suppress_magnetism(pars2)
+    pars = suppress_pd(pars, opts['mono'])
+    pars2 = suppress_pd(pars2, opts['mono'])
+    pars = suppress_magnetism(pars, not opts['magnetic'])
+    pars2 = suppress_magnetism(pars2, not opts['magnetic'])
 
     # Fill in parameters given on the command line
Index: sasmodels/models/sphere.py
===================================================================
--- sasmodels/models/sphere.py	(revision 31df0c91cf57174acd8e9cbe5f9caadffdc880ba)
+++ sasmodels/models/sphere.py	(revision 97d89aff093c26a2807b096119428334c0aa29e1)
@@ -84,4 +84,6 @@
     return radius
 
+# VR defaults to 1.0
+
 def random():
     import numpy as np
@@ -91,11 +93,4 @@
     )
     return pars
-
-# VR defaults to 1.0
-
-demo = dict(scale=1, background=0,
-            sld=6, sld_solvent=1,
-            radius=120,
-            radius_pd=.2, radius_pd_n=45)
 
 tests = [
