Index: trunk/grails-app/services/TaskReportService.groovy
===================================================================
--- trunk/grails-app/services/TaskReportService.groovy	(revision 706)
+++ trunk/grails-app/services/TaskReportService.groovy	(revision 708)
@@ -24,8 +24,18 @@
         def result = [:]
 
+        def fail = { Map m ->
+            result.error = [ code: m.code, args: [] ]
+            return result
+        }
+
         def namedParams = [:]
         namedParams.startDate = params.startDate ?: dateUtilService.today
         namedParams.endDate = params.endDate ?: dateUtilService.today
+
+        if(namedParams.endDate < namedParams.startDate)
+            return fail(code: "default.end.date.before.start.date")
+
         namedParams.endDate++ // Start of next day required.
+
         namedParams.immediateCallout = TaskType.read(1)
         namedParams.unscheduledBreakin = TaskType.read(2)
@@ -94,12 +104,12 @@
         }
         catch(ArithmeticException e) {
-            log.error "Could not calculate: Assets on Tasks Percentages: "+e
+            log.info "Could not calculate: Assets on Tasks Percentages: "+e
         }
 
         // Work Done.
-        result.immediateCalloutWorkDone = [total:0, hours:0, minutes:0, percentage:0]
+        result.immediateCalloutWorkDone = [total:0, hours:0, minutes:0, percentage: new BigDecimal(0)]
         result.unscheduledBreakinWorkDone = [total:0, hours:0, minutes:0]
         result.preventativeMaintenanceWorkDone = [total:0, hours:0, minutes:0]
-        result.totalPreventativeWorkDone = [total:0, hours:0, minutes:0, percentage:0]
+        result.totalPreventativeWorkDone = [total:0, hours:0, minutes:0, percentage: new BigDecimal(0)]
         result.totalWorkDone = [total:0, hours:0, minutes:0]
 
@@ -139,9 +149,9 @@
         // Work Done Percentages.
         try {
-            result.immediateCalloutWorkDone.percentage = (result.immediateCalloutWorkDone.total / result.totalWorkDone.total)*100
-            result.totalPreventativeWorkDone.percentage = (result.totalPreventativeWorkDone.total / result.totalWorkDone.total)*100
+            result.immediateCalloutWorkDone.percentage = (BigDecimal)(result.immediateCalloutWorkDone.total / result.totalWorkDone.total)*100
+            result.totalPreventativeWorkDone.percentage = (BigDecimal)(result.totalPreventativeWorkDone.total / result.totalWorkDone.total)*100
         }
         catch(ArithmeticException e) {
-            log.error "Could not calculate: Work Done Percentages: "+e
+            log.info "Could not calculate: Work Done Percentages: "+e
         }
 
