diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php
index 6df00e2b4c062b4a5b65011a7e34ed61f76690ec..215099e676f3b69d22a359c097c67e58b356e77f 100644
--- a/include/class.dynamic_forms.php
+++ b/include/class.dynamic_forms.php
@@ -356,6 +356,7 @@ class DynamicFormEntry extends VerySimpleModel {
     function setAnswer($name, $value, $id=false) {
         foreach ($this->getAnswers() as $ans) {
             if ($ans->getField()->get('name') == $name) {
+                $ans->getField()->reset();
                 $ans->set('value', $value);
                 if ($id !== false)
                     $ans->set('value_id', $id);
@@ -523,6 +524,7 @@ class DynamicFormEntry extends VerySimpleModel {
             $a = DynamicFormEntryAnswer::create(
                 array('field_id'=>$f->get('id')));
             $a->field = $f;
+            $a->field->setAnswer($a);
             $inst->_values[] = $a;
         }
         return $inst;
@@ -569,7 +571,7 @@ class DynamicFormEntryAnswer extends VerySimpleModel {
         if (!isset($this->field)) {
             $f = DynamicFormField::lookup($this->get('field_id'));
             $this->field = $f->getImpl($f);
-            $this->field->answer = $this;
+            $this->field->setAnswer($this);
         }
         return $this->field;
     }
diff --git a/include/class.forms.php b/include/class.forms.php
index 9c0cc0b62c6e5a41967ca6e7e7fae142225631e3..36cbfb76020c2b9502132f28a1b52dfc77acbfe3 100644
--- a/include/class.forms.php
+++ b/include/class.forms.php
@@ -116,6 +116,7 @@ class FormField {
     var $_clean;
     var $_errors = array();
     var $_widget;
+    var $answer;
     var $parent;
     var $presentation_only = false;
 
@@ -179,6 +180,9 @@ class FormField {
         }
         return $this->_clean;
     }
+    function reset() {
+        $this->_clean = $this->_widget = null;
+    }
 
     function errors() {
         return $this->_errors;
@@ -312,6 +316,7 @@ class FormField {
     }
 
     function getAnswer() { return $this->answer; }
+    function setAnswer($ans) { $this->answer = $ans; }
 
     function getFormName() {
         if (is_numeric($this->get('id')))
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 5565cfc2b898c54d59be5c924be7b65b88bad9f0..9001ee9a821df63290780d80ee3f89f0c69f6081 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -2028,7 +2028,7 @@ class Ticket {
         // Intenal mapping magic...see if we need to override anything
         if(isset($vars['topicId']) && ($topic=Topic::lookup($vars['topicId']))) { //Ticket created via web by user/or staff
             $deptId=$deptId?$deptId:$topic->getDeptId();
-            if (!$form->getAnswer('priority'))
+            if (!$form->getAnswer('priority')->getIdValue())
                 $form->setAnswer('priority', null, $topic->getPriorityId());
             if($autorespond) $autorespond=$topic->autoRespond();
             $source=$vars['source']?$vars['source']:'Web';
@@ -2047,14 +2047,14 @@ class Ticket {
 
         }elseif($vars['emailId'] && !$vars['deptId'] && ($email=Email::lookup($vars['emailId']))) { //Emailed Tickets
             $deptId=$email->getDeptId();
-            if (!$form->getAnswer('priority'))
+            if (!$form->getAnswer('priority')->getIdValue())
                 $form->setAnswer('priority', null, $email->getPriorityId());
             if($autorespond) $autorespond=$email->autoRespond();
             $email=null;
             $source='Email';
         }
         //Last minute checks
-        if (!$form->getAnswer('priority'))
+        if (!$form->getAnswer('priority')->getIdValue())
             $form->setAnswer('priority', null, $cfg->getDefaultPriorityId());
         $deptId=$deptId?$deptId:$cfg->getDefaultDeptId();
         $topicId=$vars['topicId']?$vars['topicId']:0;