Index: fittingview/src/sans/perspectives/fitting/console.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/console.py	(revision afa0a3106e6d8def32856747ba66f73e325accdd)
+++ fittingview/src/sans/perspectives/fitting/console.py	(revision 2bb37c31929fbab1f35f6739037ad9e1dff0406a)
@@ -36,5 +36,8 @@
         self.progress_delta = progress_delta
         self.improvement_delta = improvement_delta
-        self.elapsed_time = self.progress_time
+        self.elapsed_time = time.time()
+        self.update_duration = time.time()
+        self.fit_duration = 0
+        
         
     def progress(self, k, n):
@@ -50,10 +53,8 @@
         dt = t - self.improvement_time
         if self.isbetter and dt > self.improvement_delta:
-            self.result.print_summary()
+            #self.result.print_summary()
+            self.update_fit()
             self.isbetter = False
             self.improvement_time = t
-            
-            wx.PostEvent(self.parent, StatusEvent(status=\
-             "%d%% complete ..."%(p),type="progress"))
        
         # Update percent complete
@@ -65,12 +66,7 @@
                 self.progress_percent = p
                 self.progress_time = t
-                wx.PostEvent(self.parent, StatusEvent(status=\
-                                                      "%d%% complete ..."%(p),
-                                                      type="progress"))
-       
+                self.update_fit()
             elif 2 < dp <= 5:
                 if p//5 != self.progress_percent//5:
-                    wx.PostEvent(self.parent, StatusEvent(status=\
-                        "%d%% complete ..."%(5*(p//5)),type="progress"))
                     self.progress_percent = p
                     self.progress_time = t
@@ -79,6 +75,5 @@
                     self.progress_percent = p
                     self.progress_time = t
-                    wx.PostEvent(self.parent, StatusEvent(status=\
-                   "%d%% complete ..."%(10*(p//10)),type="progress"))
+                    self.update_fit()
         
     def improvement(self):
@@ -89,4 +84,11 @@
         self.isbetter = True
     
+    def print_result(self):
+        """
+        Print result object
+        """
+        msg = " \n %s \n" % self.result.__str__()
+        wx.PostEvent(self.parent, StatusEvent(status=msg))
+                     
     def error(self, msg):
         """
@@ -94,7 +96,8 @@
         """
         if self.isbetter:
-            self.result.print_summary()
-        message = "Fit Abort:"
-        message = str(msg)+ " \n %s"%self.result.__str__()
+            #self.result.print_summary()
+            self.update_fit()
+
+        message = str(msg) + " \n %s \n" % self.result.__str__()
         wx.PostEvent(self.parent, StatusEvent(status=message,
                                    info="error", type="stop"))
@@ -103,5 +106,6 @@
         """
         if self.isbetter:
-            self.result.print_summary()
+            #self.result.print_summary()
+            self.update_fit()
 
     def abort(self):
@@ -109,19 +113,50 @@
         """
         if self.isbetter:
-            self.result.print_summary()
+            #self.result.print_summary()
+            self.update_fit()
             
         
-    def update_fit(self, msg=""):
+    def update_fit(self, msg="", last=False):
         """
         """
-        self.elapsed_time = time.time() - self.elapsed_time
-        dt = self.elapsed_time - self.progress_time
-        if dt > 5:
-            msg = " Updating fit... \n Chi2/Npts = %s \n"\
-                           % (self.result.fitness)
+        t1 = time.time()
+        self.elapsed_time =  t1 - self.update_duration
+        self.update_duration = t1
+        self.fit_duration += self.elapsed_time
+        str_time = time.strftime("%a, %d %b %Y %H:%M:%S ", time.localtime(t1))
+        UPDATE_INTERVAL = 0.5
+        u_flag = False
+        if self.fit_duration >= UPDATE_INTERVAL:
+            self.fit_duration = 0
+            u_flag = True
+            
+        if not last:
+            msg += "About %s s elapsed......... \n" % str (UPDATE_INTERVAL)
+            msg += "Fit Updates ........... %s \n" % str_time
+        else:
+            msg = "Final updates ........."
+        if u_flag or last:
+            if self.result is not None:
+                data_name, model_name = None, None
+                d_flag = (hasattr(self.result, "data") and \
+                    self.result.data is not None and \
+                    hasattr(self.result.data, "sans_data") and 
+                    self.result.data.sans_data is not None)
+                m_flag = (hasattr(self.result, "model") and \
+                          self.result.model is not None)
+                if d_flag:
+                    data_name = self.result.data.sans_data.name
+                if m_flag:
+                    model_name = str(self.result.model.name)
+                if m_flag and d_flag:
+                    msg += "Data : %s  , Model : %s \n"  % (str(data_name),
+                                                     str(model_name))
+                msg +=  str(self.result)
+                msg += "\n"
+            else:
+                msg += "No result available\n"
             wx.PostEvent(self.parent, StatusEvent(status=msg, info="info",
                                               type="progress"))
-            #time.sleep(0.001)
-        
+     
     def starting_fit(self):
         """
Index: fittingview/src/sans/perspectives/fitting/fit_thread.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fit_thread.py	(revision c935fac765419e837688555d3447e936be4ea72a)
+++ fittingview/src/sans/perspectives/fitting/fit_thread.py	(revision 2bb37c31929fbab1f35f6739037ad9e1dff0406a)
@@ -1,4 +1,5 @@
 
 import sys
+import time
 from data_util.calcthread import CalcThread
 
@@ -39,5 +40,5 @@
         self.batch_outputs = batch_outputs
         self.page_id = page_id
-        self.starttime = 0
+        self.starttime = time.time()
         self.updatefn = updatefn
         #Relative error desired in the sum of squares.
@@ -82,9 +83,11 @@
                          list_reset_flag)
             result =  map(map_apply, inputs)
+    
             self.complete(result=result,
                           batch_inputs=self.batch_inputs,
                            batch_outputs=self.batch_outputs,
                           page_id=self.page_id,
-                          pars = self.pars)
+                          pars = self.pars,
+                          elapsed=time.time()-self.starttime)
            
         except KeyboardInterrupt, msg:
@@ -94,9 +97,8 @@
             #Stop on exception during fitting. Todo: need to put 
             #some mssg and reset progress bar.
-            raise
-            #if self.handler is not None:
-            #    self.handler.error(msg=msg)
+            
+            if self.handler is not None:
+                self.handler.error(msg=msg)
         except:
-            raise
             if self.handler is not None:
                 self.handler.error(msg=str(sys.exc_value))
Index: fittingview/src/sans/perspectives/fitting/fitting.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitting.py	(revision e80e704b0960dd0989194533ad7103503413926f)
+++ fittingview/src/sans/perspectives/fitting/fitting.py	(revision 2bb37c31929fbab1f35f6739037ad9e1dff0406a)
@@ -1095,5 +1095,8 @@
           
         self._update_fit_button(page_id)
-        msg = "Single Fitting complete "
+        t1 = time.time()
+        str_time = time.strftime("%a, %d %b %Y %H:%M:%S ", time.localtime(t1))
+        msg = "Fit completed on %s \n" % str_time
+        msg += "Duration time: %s s.\n" % str(elapsed)
         wx.PostEvent(self.parent, StatusEvent(status=msg, info="info",
                                                       type="stop"))
@@ -1289,6 +1292,13 @@
         :param elapsed: time spent at the fitting level
         """
+        t1 = time.time()
+        str_time = time.strftime("%a, %d %b %Y %H:%M:%S ", time.localtime(t1))
+        msg = "Fit completed on %s \n" % str_time
+        msg += "Duration time: %s s.\n" % str(elapsed)
+        wx.PostEvent(self.parent, StatusEvent(status=msg, info="info",
+                                                      type="stop"))
        # reset fit_engine if changed by simul_fit
         self._on_change_engine(self._gui_engine)
+        self._update_fit_button(page_id)
         result = result[0]
         self.fit_thread_list = {}
@@ -1312,4 +1322,5 @@
                     self._update_fit_button(page_id)
                 else:
+                    
                     cpage = self.fit_panel.get_page_by_id(uid)
                     # Make sure we got all results 
@@ -1319,19 +1330,9 @@
                     index += 1
                     cpage._on_fit_complete()
-                    if res.fitness == None:
-                        msg = "Fit Abort: "
-                    else:
-                        msg = "Fitting: "
-                    msg += "Completed!!!"
-                    wx.PostEvent(self.parent, StatusEvent(status=msg))
         except ValueError:
-                raise
-                self._update_fit_button(page_id)
                 msg = "Fitting did not converge!!!"
                 wx.PostEvent(self.parent, StatusEvent(status=msg, info="error",
                                                       type="stop"))
         except:
-            raise
-            self._update_fit_button(page_id)
             msg = "Fit completed but Following"
             msg += " error occurred:%s" % sys.exc_value
