diff --git a/R/bmr.R b/R/bmr.R
index 3d84496309aa8023c99c1c3128e27fe027f6eb34..5b8d8199188d9519fa9228f769a14b181d1471d3 100644
--- a/R/bmr.R
+++ b/R/bmr.R
@@ -386,10 +386,14 @@ bmr.default <- function(y, sigma, labels = names(y),
         }
         logdens <- log(sum(exp(log(support$weight) + logdens)))
       } else {            # joint density of (tau,beta)
-        cm <- conditionalmoments(tau=tau)
-        logdens <- (taulogpostdens(tau)
-                    + mvtnorm::dmvnorm(x=beta[idx], mean=cm$mean[idx],
-                                       sigma=cm$covariance[idx,idx,drop=FALSE], log=TRUE))
+        if (tau>=0) {
+          cm <- conditionalmoments(tau=tau)
+          logdens <- (taulogpostdens(tau)
+                      + mvtnorm::dmvnorm(x=beta[idx], mean=cm$mean[idx],
+                                         sigma=cm$covariance[idx,idx,drop=FALSE], log=TRUE))
+        } else {
+          logdens <- -Inf
+        }
       }
       return(logdens)
     }