diff --git a/openquake/commonlib/riskmodels.py b/openquake/commonlib/riskmodels.py
index <HASH>..<HASH> 100644
--- a/openquake/commonlib/riskmodels.py
+++ b/openquake/commonlib/riskmodels.py
@@ -164,7 +164,7 @@ def get_risk_models(oqparam, kind=None):
     elif kind == 'consequence':
         rdict = rmodels
     else:  # vulnerability
-        cl_risk = oqparam.calculation_mode == 'classical_risk'
+        cl_risk = oqparam.calculation_mode in ('classical', 'classical_risk')
         # only for classical_risk reduce the loss_ratios
         # to make sure they are strictly increasing
         for loss_type, rm in rmodels.items():
diff --git a/openquake/risklib/scientific.py b/openquake/risklib/scientific.py
index <HASH>..<HASH> 100644
--- a/openquake/risklib/scientific.py
+++ b/openquake/risklib/scientific.py
@@ -1200,6 +1200,8 @@ def classical(vulnerability_function, hazard_imls, hazard_poes, steps=10):
     :param int steps:
         Number of steps between loss ratios.
     """
+    assert len(hazard_imls) == len(hazard_poes), (
+        len(hazard_imls), len(hazard_poes))
     vf = vulnerability_function
     imls = vf.mean_imls()
     loss_ratios, lrem = vf.loss_ratio_exceedance_matrix(steps)
Fixed case_2a of Anirudh