diff --git a/R/basicWQPData.R b/R/basicWQPData.R
index 6bece887f97d0cc65a3d4987006a63528eb692e3..b80e94cb95280ecebe0ffb25975e518024cc2730 100644
--- a/R/basicWQPData.R
+++ b/R/basicWQPData.R
@@ -59,21 +59,27 @@ basicWQPData <- function(url){
                                   c("EST","EDT","CST","CDT","MST","MDT","PST","PDT","AKST","AKDT","HAST","HST"))
       timeZoneStart <- as.character(timeZoneLibrary[retval$ActivityStartTime.TimeZoneCode])
       timeZoneEnd <- as.character(timeZoneLibrary[retval$ActivityEndTime.TimeZoneCode])
+      timeZoneStart[is.na(timeZoneStart)] <- ""
+      timeZoneEnd[is.na(timeZoneEnd)] <- ""
       
       if(any(!is.na(timeZoneStart))){
         if(length(unique(timeZoneStart)) == 1){
           retval$ActivityStartDateTime <- with(retval, as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time),format="%Y-%m-%d %H:%M:%S", tz=unique(timeZoneStart)))
         } else {
-#           warning("Mixed time zone information")
-          if(any(is.na(timeZoneStart))){
-            warning("Missing time zone information, all dateTimes default to user's local time")
-            retval$ActivityStartDateTime <- with(retval, as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time), format="%Y-%m-%d %H:%M:%S"),tz=Sys.timezone())
-          } else {
-            for(i in seq_along(row.names(retval))){
-              timeZone <- timeZoneStart[i]
-              retval$ActivityStartDateTime[i] <- with(retval, as.POSIXct(paste(ActivityStartDate[i], ActivityStartTime.Time[i]), format="%Y-%m-%d %H:%M:%S",tz=timeZone))
-            }
+          
+          mostCommonTZ <- names(sort(summary(as.factor(timeZoneStart)),decreasing = TRUE)[1])
+
+          retval$ActivityStartDateTime <- with(retval, as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time),
+                                        format="%Y-%m-%d %H:%M:%S", 
+                                        tz=mostCommonTZ))
+          additionalTZs <- names(sort(summary(as.factor(timeZoneStart)),decreasing = TRUE)[-1])
+          for(i in additionalTZs){
+            retval$ActivityStartDateTime[timeZoneStart == i] <-  with(retval[timeZoneStart == i,], 
+                               as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time),
+                               format="%Y-%m-%d %H:%M:%S", 
+                               tz=i))      
           }
+
         }
       }
       
@@ -81,20 +87,23 @@ basicWQPData <- function(url){
         if(length(unique(timeZoneEnd)) == 1){
           retval$ActivityEndDateTime <- with(retval, as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time), format="%Y-%m-%d %H:%M:%S",tz=unique(timeZoneEnd)))
         } else {
-          warning("Mixed time zone information")
-          if(any(is.na(timeZoneEnd))){
-            warning("Missing time zone information, all dateTimes default to user's local time")
-            retval$ActivityEndDateTime <- with(retval, as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time), format="%Y-%m-%d %H:%M:%S"), tz=Sys.timezone())
-          } else {
-            for(i in seq_along(row.names(retval))){
-              retval$ActivityEndDateTime[i] <- with(retval, as.POSIXct(paste(ActivityEndDate[i], ActivityEndTime.Time[i]), format="%Y-%m-%d %H:%M:%S",tz=timeZoneEnd[i]))
-            }
+          mostCommonTZ <- names(sort(summary(as.factor(timeZoneEnd)),decreasing = TRUE)[1])
+          
+          retval$ActivityEndDateTime <- with(retval, as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time),
+                                                                  format="%Y-%m-%d %H:%M:%S", 
+                                                                  tz=mostCommonTZ))
+          additionalTZs <- names(sort(summary(as.factor(timeZoneEnd)),decreasing = TRUE)[-1])
+          for(i in additionalTZs){
+            retval$ActivityEndDateTime[timeZoneEnd == i] <-  with(retval[timeZoneEnd == i,], 
+                                                                      as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time),
+                                                                                 format="%Y-%m-%d %H:%M:%S", 
+                                                                                 tz=i))      
           }
         }
       }
       
       if(any(retval$ActivityEndDate != "")){
-        retval$ActivityEndDate <- as.Date(retval$ActivityEndDate)
+        retval$ActivityEndDate[retval$ActivityEndDate != ""] <- as.Date(retval$ActivityEndDate[retval$ActivityEndDate != ""])
       }
       
       return(retval)
diff --git a/R/getRDB1Data.r b/R/getRDB1Data.r
index a3053cfa27e833a7d2d321d9c8fc1fdb5514f2bd..3bb264d60333cab989dea8d0fb2bca9ad29125bc 100644
--- a/R/getRDB1Data.r
+++ b/R/getRDB1Data.r
@@ -74,10 +74,18 @@ getRDB1Data <- function(obs_url,asDateTime=FALSE){
         if(length(unique(timeZone)) == 1){
           data[,regexpr('d$', dataType) > 0] <- as.POSIXct(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = unique(timeZone))
         } else {
-#           warning("Mixed time zone information")
-          for(i in seq_along(row.names(data))){
-            data[i,regexpr('d$', dataType) > 0] <- as.POSIXct(data[i,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = timeZone[i])
+          
+          mostCommonTZ <- names(sort(summary(as.factor(timeZone)),decreasing = TRUE)[1])
+
+          data[,regexpr('d$', dataType) > 0] <- as.POSIXct(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = mostCommonTZ)
+          additionalTZs <- names(sort(summary(as.factor(timeZone)),decreasing = TRUE)[-1])
+          for(i in additionalTZs){
+            data[timeZone == i,regexpr('d$', dataType) > 0] <-  as.POSIXct(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = i)
           }
+          
+#           for(i in seq_along(row.names(data))){
+#             data[i,regexpr('d$', dataType) > 0] <- as.POSIXct(data[i,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = timeZone[i])
+#           }
         }
         
       } else {