protected function add_add_penalty(ImsQtiWriter $processing, $question, $input_id = ImsQtiWriter::SCORE, $score_id = ImsQtiWriter::SCORE, $penalty_id = self::PENALTY)
 {
     if (!$this->has_penalty($question)) {
         return null;
     }
     $result = $processing->add_setOutcomeValue($score_id);
     $sum = $result->add_subtract();
     $sum->add_variable($input_id);
     $sum->add_variable($penalty_id);
     $result = $processing->add_responseCondition();
     $if = $result->add_responseIf();
     $lt = $if->add_lt();
     $lt->add_variable($input_id);
     $lt->add_baseValue(ImsQtiWriter::BASETYPE_FLOAT, 0);
     $if->add_setOutcomeValue($input_id)->add_baseValue(ImsQtiWriter::BASETYPE_FLOAT, 0);
     return $result;
 }