diff --git a/prism/src/simulator/PathFull.java b/prism/src/simulator/PathFull.java index 3ccbceb2..ca5f2cf0 100644 --- a/prism/src/simulator/PathFull.java +++ b/prism/src/simulator/PathFull.java @@ -473,7 +473,7 @@ public class PathFull extends Path implements PathFullInfo changed = true; } if (!changed) { - d = (i < n - 1) ? getTime(i) : 0.0; + d = (i < n) ? getTime(i) : 0.0; t += d; continue; } @@ -485,7 +485,7 @@ public class PathFull extends Path implements PathFullInfo log.print(i); // print time (if continuous time) if (contTime) { - d = (i < n - 1) ? getTime(i) : 0.0; + d = (i < n) ? getTime(i) : 0.0; log.print(colSep + (timeCumul ? t : d)); t += d; } diff --git a/prism/src/simulator/Updater.java b/prism/src/simulator/Updater.java index 55227ef9..fef16c4e 100644 --- a/prism/src/simulator/Updater.java +++ b/prism/src/simulator/Updater.java @@ -323,7 +323,14 @@ public class Updater if (modelType.choicesSumToOne() && Math.abs(sum - 1) > prism.getSumRoundOff()) { throw new PrismLangException("Probabilities sum to " + sum + " in state " + state.toString(modulesFile), ups); } - + // Check if empty (e.g. due to all 0 probs/rates) + // Currently, PRISM treats this as an error + if (ch.size() == 0) { + String msg = modelType.probabilityOrRate(); + msg += (ups.getNumUpdates() > 1) ? " values sum to " : " is "; + msg += "zero for update in state " + state.toString(modulesFile); + //throw new PrismLangException(msg, ups); + } return ch; }