Index: src/java/org/apache/ivy/plugins/resolver/BasicResolver.java
===================================================================
--- src/java/org/apache/ivy/plugins/resolver/BasicResolver.java	(revision 1493256)
+++ src/java/org/apache/ivy/plugins/resolver/BasicResolver.java	(working copy)
@@ -357,7 +348,7 @@
         // the metadata artifact which was used to cache the original metadata file
         Artifact requestedMetadataArtifact = ivyRef == null ? systemMd.getMetadataArtifact()
                 : parser.getMetadataArtifact(
-                    ModuleRevisionId.newInstance(systemMrid, ivyRef.getRevision()),
+                    ModuleRevisionId.newInstance(systemMrid, systemMd.getRevision()),
                     ivyRef.getResource());
 
         cacheManager.originalToCachedModuleDescriptor(this, ivyRef, requestedMetadataArtifact, rmr,
@@ -606,9 +597,9 @@
                     + md.getModuleRevisionId().getBranch() + "'; ");
             ok = false;
         }
-        if (ivyRef.getRevision() != null && !ivyRef.getRevision().startsWith("working@")) {
-            ModuleRevisionId expectedMrid = ModuleRevisionId
-                    .newInstance(mrid, ivyRef.getRevision());
+        if (mrid.getRevision() != null
+                && !mrid.getRevision().equals(md.getModuleRevisionId().getRevision())) {
+            ModuleRevisionId expectedMrid = ModuleRevisionId.newInstance(mrid, mrid.getRevision());
             if (!getSettings().getVersionMatcher().accept(expectedMrid, md)) {
                 Message.error("\t" + getName() + ": bad revision found in " + ivyRef.getResource()
                         + ": expected='" + ivyRef.getRevision() + " found='"
